Commit a8c764e1 authored by Al Viro's avatar Al Viro
Browse files

attach_recursive_mnt(): remove from expiry list on move



... rather than doing that in do_move_mount().  That's the main
obstacle to moving the protection of ->mnt_expire from namespace_sem
to mount_lock (spinlock-only), which would simplify several failure
exits.

Reviewed-by: default avatarChristian Brauner <brauner@kernel.org>
Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent ee1ee33c
Loading
Loading
Loading
Loading
+3 −6
Original line number Diff line number Diff line
@@ -2684,6 +2684,9 @@ static int attach_recursive_mnt(struct mount *source_mnt,
	if (moving) {
		umount_mnt(source_mnt);
		mnt_notify_add(source_mnt);
		/* if the mount is moved, it should no longer be expired
		 * automatically */
		list_del_init(&source_mnt->mnt_expire);
	} else {
		if (source_mnt->mnt_ns) {
			LIST_HEAD(head);
@@ -3674,12 +3677,6 @@ static int do_move_mount(struct path *old_path,
		goto out;

	err = attach_recursive_mnt(old, p, mp);
	if (err)
		goto out;

	/* if the mount is moved, it should no longer be expire
	 * automatically */
	list_del_init(&old->mnt_expire);
out:
	unlock_mount(mp);
	if (!err) {