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

Commit 95cf959b authored by Trond Myklebust's avatar Trond Myklebust
Browse files

VFS: Fix another open intent Oops



If the call to nfs_intent_set_file() fails to open a file in
nfs4_proc_create(), we should return an error.

Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
parent d4a30e7e
Loading
Loading
Loading
Loading
+6 −4
Original line number Diff line number Diff line
@@ -1218,7 +1218,7 @@ int nfs4_do_close(struct inode *inode, struct nfs4_state *state)
	return status;
}

static void nfs4_intent_set_file(struct nameidata *nd, struct dentry *dentry, struct nfs4_state *state)
static int nfs4_intent_set_file(struct nameidata *nd, struct dentry *dentry, struct nfs4_state *state)
{
	struct file *filp;

@@ -1227,8 +1227,10 @@ static void nfs4_intent_set_file(struct nameidata *nd, struct dentry *dentry, st
		struct nfs_open_context *ctx;
		ctx = (struct nfs_open_context *)filp->private_data;
		ctx->state = state;
	} else
		return 0;
	}
	nfs4_close_state(state, nd->intent.open.flags);
	return PTR_ERR(filp);
}

struct dentry *
@@ -1835,7 +1837,7 @@ nfs4_proc_create(struct inode *dir, struct dentry *dentry, struct iattr *sattr,
			nfs_setattr_update_inode(state->inode, sattr);
	}
	if (status == 0 && nd != NULL && (nd->flags & LOOKUP_OPEN))
		nfs4_intent_set_file(nd, dentry, state);
		status = nfs4_intent_set_file(nd, dentry, state);
	else
		nfs4_close_state(state, flags);
out: