auth_gss: fetch the acceptor name out of the downcall
If rpc.gssd sends us an acceptor name string trailing the context token, stash it as part of the context. Signed-off-by: Jeff Layton <jlayton@poochiereds.net> Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
This commit is contained in:
parent
f1cdae87fc
commit
2004c726b9
|
@ -71,6 +71,7 @@ struct gss_cl_ctx {
|
|||
spinlock_t gc_seq_lock;
|
||||
struct gss_ctx __rcu *gc_gss_ctx;
|
||||
struct xdr_netobj gc_wire_ctx;
|
||||
struct xdr_netobj gc_acceptor;
|
||||
u32 gc_win;
|
||||
unsigned long gc_expiry;
|
||||
struct rcu_head gc_rcu;
|
||||
|
|
|
@ -262,9 +262,22 @@ gss_fill_context(const void *p, const void *end, struct gss_cl_ctx *ctx, struct
|
|||
p = ERR_PTR(ret);
|
||||
goto err;
|
||||
}
|
||||
dprintk("RPC: %s Success. gc_expiry %lu now %lu timeout %u\n",
|
||||
__func__, ctx->gc_expiry, now, timeout);
|
||||
return q;
|
||||
|
||||
/* is there any trailing data? */
|
||||
if (q == end) {
|
||||
p = q;
|
||||
goto done;
|
||||
}
|
||||
|
||||
/* pull in acceptor name (if there is one) */
|
||||
p = simple_get_netobj(q, end, &ctx->gc_acceptor);
|
||||
if (IS_ERR(p))
|
||||
goto err;
|
||||
done:
|
||||
dprintk("RPC: %s Success. gc_expiry %lu now %lu timeout %u acceptor %.*s\n",
|
||||
__func__, ctx->gc_expiry, now, timeout, ctx->gc_acceptor.len,
|
||||
ctx->gc_acceptor.data);
|
||||
return p;
|
||||
err:
|
||||
dprintk("RPC: %s returns error %ld\n", __func__, -PTR_ERR(p));
|
||||
return p;
|
||||
|
@ -1225,6 +1238,7 @@ gss_do_free_ctx(struct gss_cl_ctx *ctx)
|
|||
|
||||
gss_delete_sec_context(&ctx->gc_gss_ctx);
|
||||
kfree(ctx->gc_wire_ctx.data);
|
||||
kfree(ctx->gc_acceptor.data);
|
||||
kfree(ctx);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue