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

Commit 4b58c9b1 authored by Sage Weil's avatar Sage Weil Committed by Yan, Zheng
Browse files

ceph: do not set r_old_dentry_dir on link()



This is racy--we do not know whather d_parent has changed out from
underneath us because i_mutex is not held on the source inode's directory.

Also, taking this reference is useless.

Reported-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
Signed-off-by: default avatarSage Weil <sage@inktank.com>
Reviewed-by: default avatarYan, Zheng <zheng.z.yan@intel.com>
parent 844d87c3
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -812,8 +812,7 @@ static int ceph_link(struct dentry *old_dentry, struct inode *dir,
	}
	req->r_dentry = dget(dentry);
	req->r_num_caps = 2;
	req->r_old_dentry = dget(old_dentry); /* or inode? hrm. */
	req->r_old_dentry_dir = ceph_get_dentry_parent_inode(old_dentry);
	req->r_old_dentry = dget(old_dentry);
	req->r_locked_dir = dir;
	req->r_dentry_drop = CEPH_CAP_FILE_SHARED;
	req->r_dentry_unless = CEPH_CAP_FILE_EXCL;