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: Trond Myklebust <Trond.Myklebust@netapp.com>
This commit is contained in:
parent
d4a30e7e66
commit
95cf959b24
@ -1218,7 +1218,7 @@ out:
|
||||
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
|
||||
nfs4_close_state(state, nd->intent.open.flags);
|
||||
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:
|
||||
|
Loading…
Reference in New Issue
Block a user