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

Commit a4deb81b authored by Trond Myklebust's avatar Trond Myklebust
Browse files

SUNRPC: Don't call gss_delete_sec_context() from an rcu context



Doing so may not be safe...

Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
parent 905f8d16
Loading
Loading
Loading
Loading
+6 −3
Original line number Diff line number Diff line
@@ -736,9 +736,6 @@ gss_do_free_ctx(struct gss_cl_ctx *ctx)
{
	dprintk("RPC:       gss_free_ctx\n");

	if (ctx->gc_gss_ctx)
		gss_delete_sec_context(&ctx->gc_gss_ctx);

	kfree(ctx->gc_wire_ctx.data);
	kfree(ctx);
}
@@ -753,7 +750,13 @@ gss_free_ctx_callback(struct rcu_head *head)
static void
gss_free_ctx(struct gss_cl_ctx *ctx)
{
	struct gss_ctx *gc_gss_ctx;

	gc_gss_ctx = rcu_dereference(ctx->gc_gss_ctx);
	rcu_assign_pointer(ctx->gc_gss_ctx, NULL);
	call_rcu(&ctx->gc_rcu, gss_free_ctx_callback);
	if (gc_gss_ctx)
		gss_delete_sec_context(&gc_gss_ctx);
}

static void