Commit 1d179d6b authored by Trond Myklebust's avatar Trond Myklebust
Browse files

NFS: alloc_nfs_open_context() must use the file cred when available



If we're creating a nfs_open_context() for a specific file pointer,
we must use the cred assigned to that file.

Fixes: a52458b4 ("NFS/NFSD/SUNRPC: replace generic creds with 'struct cred'.")
Signed-off-by: default avatarTrond Myklebust <trond.myklebust@hammerspace.com>
parent 244fcd2f
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -959,16 +959,16 @@ struct nfs_open_context *alloc_nfs_open_context(struct dentry *dentry,
						struct file *filp)
{
	struct nfs_open_context *ctx;
	const struct cred *cred = get_current_cred();

	ctx = kmalloc(sizeof(*ctx), GFP_KERNEL);
	if (!ctx) {
		put_cred(cred);
	if (!ctx)
		return ERR_PTR(-ENOMEM);
	}
	nfs_sb_active(dentry->d_sb);
	ctx->dentry = dget(dentry);
	ctx->cred = cred;
	if (filp)
		ctx->cred = get_cred(filp->f_cred);
	else
		ctx->cred = get_current_cred();
	ctx->ll_cred = NULL;
	ctx->state = NULL;
	ctx->mode = f_mode;