mirror of https://gitee.com/openkylin/linux.git
9p: fix braino introduced in "9p: new helper - v9fs_parent_fid()"
In v9fs_vfs_rename() we need to clone the parents' fids, not just find them. Spotted-by: Johannes Berg <johannes@sipsolutions.net> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
parent
6fa67e7075
commit
797fc16d8f
|
@ -31,4 +31,8 @@ static inline struct p9_fid *v9fs_parent_fid(struct dentry *dentry)
|
|||
struct p9_fid *v9fs_fid_clone(struct dentry *dentry);
|
||||
void v9fs_fid_add(struct dentry *dentry, struct p9_fid *fid);
|
||||
struct p9_fid *v9fs_writeback_fid(struct dentry *dentry);
|
||||
static inline struct p9_fid *clone_fid(struct p9_fid *fid)
|
||||
{
|
||||
return IS_ERR(fid) ? fid : p9_client_walk(fid, 0, NULL, 1);
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -975,13 +975,13 @@ v9fs_vfs_rename(struct inode *old_dir, struct dentry *old_dentry,
|
|||
if (IS_ERR(oldfid))
|
||||
return PTR_ERR(oldfid);
|
||||
|
||||
olddirfid = v9fs_parent_fid(old_dentry);
|
||||
olddirfid = clone_fid(v9fs_parent_fid(old_dentry));
|
||||
if (IS_ERR(olddirfid)) {
|
||||
retval = PTR_ERR(olddirfid);
|
||||
goto done;
|
||||
}
|
||||
|
||||
newdirfid = v9fs_parent_fid(new_dentry);
|
||||
newdirfid = clone_fid(v9fs_parent_fid(new_dentry));
|
||||
if (IS_ERR(newdirfid)) {
|
||||
retval = PTR_ERR(newdirfid);
|
||||
goto clunk_olddir;
|
||||
|
|
Loading…
Reference in New Issue