Commit 761de258 authored by Al Viro's avatar Al Viro
Browse files

do_move_mount(): take dropping the old mountpoint into attach_recursive_mnt()



... and fold it with unhash_mnt() there - there's no need to retain a reference
to old_mp beyond that point, since by then all mountpoints we were going to add
are either explicitly pinned by get_mountpoint() or have stuff already added
to them.

Reviewed-by: default avatarChristian Brauner <brauner@kernel.org>
Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent 86b1da96
Loading
Loading
Loading
Loading
+2 −5
Original line number Diff line number Diff line
@@ -2682,7 +2682,7 @@ static int attach_recursive_mnt(struct mount *source_mnt,
	}

	if (moving) {
		unhash_mnt(source_mnt);
		umount_mnt(source_mnt);
		mnt_notify_add(source_mnt);
	} else {
		if (source_mnt->mnt_ns) {
@@ -3598,7 +3598,7 @@ static int do_move_mount(struct path *old_path,
	struct mount *p;
	struct mount *old;
	struct mount *parent;
	struct mountpoint *mp, *old_mp;
	struct mountpoint *mp;
	int err;
	bool attached, beneath = flags & MNT_TREE_BENEATH;

@@ -3610,7 +3610,6 @@ static int do_move_mount(struct path *old_path,
	p = real_mount(new_path->mnt);
	parent = old->mnt_parent;
	attached = mnt_has_parent(old);
	old_mp = old->mnt_mp;
	ns = old->mnt_ns;

	err = -EINVAL;
@@ -3684,8 +3683,6 @@ static int do_move_mount(struct path *old_path,
	/* if the mount is moved, it should no longer be expire
	 * automatically */
	list_del_init(&old->mnt_expire);
	if (attached)
		put_mountpoint(old_mp);
out:
	unlock_mount(mp);
	if (!err) {