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

Commit 797fc16d authored by Al Viro's avatar Al Viro
Browse files

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: default avatarJohannes Berg <johannes@sipsolutions.net>
Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent 6fa67e70
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -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
+2 −2
Original line number Diff line number Diff line
@@ -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;