]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
change_mnt_propagation(): do_make_slave() is a no-op unless IS_MNT_SHARED()
authorAl Viro <viro@zeniv.linux.org.uk>
Wed, 25 Jun 2025 03:25:00 +0000 (23:25 -0400)
committerAl Viro <viro@zeniv.linux.org.uk>
Sun, 29 Jun 2025 23:03:30 +0000 (19:03 -0400)
... since mnt->mnt_share and mnt->mnt_slave_list are guaranteed to be empty unless
IS_MNT_SHARED(mnt).

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
fs/pnode.c

index 14618eac20254e353243793082eba1d7b05cfda3..9723f05cda5f150bf9966dabe23b4bd936bb552b 100644 (file)
@@ -70,10 +70,8 @@ static int do_make_slave(struct mount *mnt)
        struct mount *master, *slave_mnt;
 
        if (list_empty(&mnt->mnt_share)) {
-               if (IS_MNT_SHARED(mnt)) {
-                       mnt_release_group_id(mnt);
-                       CLEAR_MNT_SHARED(mnt);
-               }
+               mnt_release_group_id(mnt);
+               CLEAR_MNT_SHARED(mnt);
                master = mnt->mnt_master;
                if (!master) {
                        struct list_head *p = &mnt->mnt_slave_list;
@@ -119,7 +117,8 @@ void change_mnt_propagation(struct mount *mnt, int type)
                set_mnt_shared(mnt);
                return;
        }
-       do_make_slave(mnt);
+       if (IS_MNT_SHARED(mnt))
+               do_make_slave(mnt);
        list_del_init(&mnt->mnt_slave);
        if (type == MS_SLAVE) {
                if (mnt->mnt_master)