Commit 2ea03e1d authored by Al Viro's avatar Al Viro

9p: v9fs_fid_add() can't fail now

Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent aaeb7ecf
...@@ -41,12 +41,11 @@ ...@@ -41,12 +41,11 @@
* *
*/ */
int v9fs_fid_add(struct dentry *dentry, struct p9_fid *fid) void v9fs_fid_add(struct dentry *dentry, struct p9_fid *fid)
{ {
spin_lock(&dentry->d_lock); spin_lock(&dentry->d_lock);
hlist_add_head(&fid->dlist, (struct hlist_head *)&dentry->d_fsdata); hlist_add_head(&fid->dlist, (struct hlist_head *)&dentry->d_fsdata);
spin_unlock(&dentry->d_lock); spin_unlock(&dentry->d_lock);
return 0;
} }
/** /**
......
...@@ -25,6 +25,6 @@ ...@@ -25,6 +25,6 @@
struct p9_fid *v9fs_fid_lookup(struct dentry *dentry); struct p9_fid *v9fs_fid_lookup(struct dentry *dentry);
struct p9_fid *v9fs_fid_clone(struct dentry *dentry); struct p9_fid *v9fs_fid_clone(struct dentry *dentry);
int v9fs_fid_add(struct dentry *dentry, struct p9_fid *fid); void v9fs_fid_add(struct dentry *dentry, struct p9_fid *fid);
struct p9_fid *v9fs_writeback_fid(struct dentry *dentry); struct p9_fid *v9fs_writeback_fid(struct dentry *dentry);
#endif #endif
...@@ -692,9 +692,7 @@ v9fs_create(struct v9fs_session_info *v9ses, struct inode *dir, ...@@ -692,9 +692,7 @@ v9fs_create(struct v9fs_session_info *v9ses, struct inode *dir,
"inode creation failed %d\n", err); "inode creation failed %d\n", err);
goto error; goto error;
} }
err = v9fs_fid_add(dentry, fid); v9fs_fid_add(dentry, fid);
if (err < 0)
goto error;
d_instantiate(dentry, inode); d_instantiate(dentry, inode);
} }
return ofid; return ofid;
...@@ -830,9 +828,7 @@ struct dentry *v9fs_vfs_lookup(struct inode *dir, struct dentry *dentry, ...@@ -830,9 +828,7 @@ struct dentry *v9fs_vfs_lookup(struct inode *dir, struct dentry *dentry,
inode = NULL; inode = NULL;
goto error; goto error;
} }
result = v9fs_fid_add(dentry, fid); v9fs_fid_add(dentry, fid);
if (result < 0)
goto error_iput;
inst_out: inst_out:
/* /*
* If we had a rename on the server and a parallel lookup * If we had a rename on the server and a parallel lookup
...@@ -845,7 +841,6 @@ struct dentry *v9fs_vfs_lookup(struct inode *dir, struct dentry *dentry, ...@@ -845,7 +841,6 @@ struct dentry *v9fs_vfs_lookup(struct inode *dir, struct dentry *dentry,
if (!IS_ERR(res)) if (!IS_ERR(res))
return res; return res;
result = PTR_ERR(res); result = PTR_ERR(res);
error_iput:
iput(inode); iput(inode);
error: error:
p9_client_clunk(fid); p9_client_clunk(fid);
......
...@@ -333,9 +333,7 @@ v9fs_vfs_atomic_open_dotl(struct inode *dir, struct dentry *dentry, ...@@ -333,9 +333,7 @@ v9fs_vfs_atomic_open_dotl(struct inode *dir, struct dentry *dentry,
/* Now set the ACL based on the default value */ /* Now set the ACL based on the default value */
v9fs_set_create_acl(inode, fid, dacl, pacl); v9fs_set_create_acl(inode, fid, dacl, pacl);
err = v9fs_fid_add(dentry, fid); v9fs_fid_add(dentry, fid);
if (err < 0)
goto error;
d_instantiate(dentry, inode); d_instantiate(dentry, inode);
v9inode = V9FS_I(inode); v9inode = V9FS_I(inode);
...@@ -453,12 +451,11 @@ static int v9fs_vfs_mkdir_dotl(struct inode *dir, ...@@ -453,12 +451,11 @@ static int v9fs_vfs_mkdir_dotl(struct inode *dir,
err); err);
goto error; goto error;
} }
err = v9fs_fid_add(dentry, fid); v9fs_fid_add(dentry, fid);
if (err < 0)
goto error;
v9fs_set_create_acl(inode, fid, dacl, pacl); v9fs_set_create_acl(inode, fid, dacl, pacl);
d_instantiate(dentry, inode); d_instantiate(dentry, inode);
fid = NULL; fid = NULL;
err = 0;
} else { } else {
/* /*
* Not in cached mode. No need to populate * Not in cached mode. No need to populate
...@@ -747,11 +744,10 @@ v9fs_vfs_symlink_dotl(struct inode *dir, struct dentry *dentry, ...@@ -747,11 +744,10 @@ v9fs_vfs_symlink_dotl(struct inode *dir, struct dentry *dentry,
err); err);
goto error; goto error;
} }
err = v9fs_fid_add(dentry, fid); v9fs_fid_add(dentry, fid);
if (err < 0)
goto error;
d_instantiate(dentry, inode); d_instantiate(dentry, inode);
fid = NULL; fid = NULL;
err = 0;
} else { } else {
/* Not in cached mode. No need to populate inode with stat */ /* Not in cached mode. No need to populate inode with stat */
inode = v9fs_get_inode(dir->i_sb, S_IFLNK, 0); inode = v9fs_get_inode(dir->i_sb, S_IFLNK, 0);
...@@ -900,11 +896,10 @@ v9fs_vfs_mknod_dotl(struct inode *dir, struct dentry *dentry, umode_t omode, ...@@ -900,11 +896,10 @@ v9fs_vfs_mknod_dotl(struct inode *dir, struct dentry *dentry, umode_t omode,
goto error; goto error;
} }
v9fs_set_create_acl(inode, fid, dacl, pacl); v9fs_set_create_acl(inode, fid, dacl, pacl);
err = v9fs_fid_add(dentry, fid); v9fs_fid_add(dentry, fid);
if (err < 0)
goto error;
d_instantiate(dentry, inode); d_instantiate(dentry, inode);
fid = NULL; fid = NULL;
err = 0;
} else { } else {
/* /*
* Not in cached mode. No need to populate inode with stat. * Not in cached mode. No need to populate inode with stat.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment