Skip to content

Commit 400f26b

Browse files
simo5J. Bruce Fields
authored andcommitted
SUNRPC: conditionally return endtime from import_sec_context
We expose this parameter for a future caller. It will be used to extract the endtime from the gss-proxy upcall mechanism, in order to set the rsc cache expiration time. Signed-off-by: Simo Sorce <[email protected]> Signed-off-by: J. Bruce Fields <[email protected]>
1 parent 33d90ac commit 400f26b

File tree

5 files changed

+13
-6
lines changed

5 files changed

+13
-6
lines changed

include/linux/sunrpc/gss_api.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ int gss_import_sec_context(
3737
size_t bufsize,
3838
struct gss_api_mech *mech,
3939
struct gss_ctx **ctx_id,
40+
time_t *endtime,
4041
gfp_t gfp_mask);
4142
u32 gss_get_mic(
4243
struct gss_ctx *ctx_id,
@@ -92,6 +93,7 @@ struct gss_api_ops {
9293
const void *input_token,
9394
size_t bufsize,
9495
struct gss_ctx *ctx_id,
96+
time_t *endtime,
9597
gfp_t gfp_mask);
9698
u32 (*gss_get_mic)(
9799
struct gss_ctx *ctx_id,

net/sunrpc/auth_gss/auth_gss.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -238,7 +238,7 @@ gss_fill_context(const void *p, const void *end, struct gss_cl_ctx *ctx, struct
238238
p = ERR_PTR(-EFAULT);
239239
goto err;
240240
}
241-
ret = gss_import_sec_context(p, seclen, gm, &ctx->gc_gss_ctx, GFP_NOFS);
241+
ret = gss_import_sec_context(p, seclen, gm, &ctx->gc_gss_ctx, NULL, GFP_NOFS);
242242
if (ret < 0) {
243243
p = ERR_PTR(ret);
244244
goto err;

net/sunrpc/auth_gss/gss_krb5_mech.c

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -679,6 +679,7 @@ gss_import_v2_context(const void *p, const void *end, struct krb5_ctx *ctx,
679679
static int
680680
gss_import_sec_context_kerberos(const void *p, size_t len,
681681
struct gss_ctx *ctx_id,
682+
time_t *endtime,
682683
gfp_t gfp_mask)
683684
{
684685
const void *end = (const void *)((const char *)p + len);
@@ -694,9 +695,11 @@ gss_import_sec_context_kerberos(const void *p, size_t len,
694695
else
695696
ret = gss_import_v2_context(p, end, ctx, gfp_mask);
696697

697-
if (ret == 0)
698+
if (ret == 0) {
698699
ctx_id->internal_ctx_id = ctx;
699-
else
700+
if (endtime)
701+
*endtime = ctx->endtime;
702+
} else
700703
kfree(ctx);
701704

702705
dprintk("RPC: %s: returning %d\n", __func__, ret);

net/sunrpc/auth_gss/gss_mech_switch.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -325,14 +325,15 @@ int
325325
gss_import_sec_context(const void *input_token, size_t bufsize,
326326
struct gss_api_mech *mech,
327327
struct gss_ctx **ctx_id,
328+
time_t *endtime,
328329
gfp_t gfp_mask)
329330
{
330331
if (!(*ctx_id = kzalloc(sizeof(**ctx_id), gfp_mask)))
331332
return -ENOMEM;
332333
(*ctx_id)->mech_type = gss_mech_get(mech);
333334

334-
return mech->gm_ops
335-
->gss_import_sec_context(input_token, bufsize, *ctx_id, gfp_mask);
335+
return mech->gm_ops->gss_import_sec_context(input_token, bufsize,
336+
*ctx_id, endtime, gfp_mask);
336337
}
337338

338339
/* gss_get_mic: compute a mic over message and return mic_token. */

net/sunrpc/auth_gss/svcauth_gss.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -497,7 +497,8 @@ static int rsc_parse(struct cache_detail *cd,
497497
len = qword_get(&mesg, buf, mlen);
498498
if (len < 0)
499499
goto out;
500-
status = gss_import_sec_context(buf, len, gm, &rsci.mechctx, GFP_KERNEL);
500+
status = gss_import_sec_context(buf, len, gm, &rsci.mechctx,
501+
NULL, GFP_KERNEL);
501502
if (status)
502503
goto out;
503504

0 commit comments

Comments
 (0)