Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2004c726 authored by Jeff Layton's avatar Jeff Layton Committed by Trond Myklebust
Browse files

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: default avatarJeff Layton <jlayton@poochiereds.net>
Signed-off-by: default avatarTrond Myklebust <trond.myklebust@primarydata.com>
parent f1cdae87
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -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;
+17 −3
Original line number Diff line number Diff line
@@ -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);
}