Skip to content

Commit

Permalink
VFS: Fix another open intent Oops
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Trond Myklebust authored and Trond Myklebust committed Apr 19, 2006
1 parent d4a30e7 commit 95cf959
Showing 1 changed file with 6 additions and 4 deletions.
10 changes: 6 additions & 4 deletions fs/nfs/nfs4proc.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand All @@ -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 *
Expand Down Expand Up @@ -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:
Expand Down

0 comments on commit 95cf959

Please sign in to comment.