Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

ipc: create_ipc_ns: drop mqueue mount on sysctl setup failure

If setup_mq_sysctls(ns) fails after mq_init_ns(ns) succeeds, the error
path skipped releasing the internal kernel mqueue mount kept in
ns->mq_mnt. That leaves the vfsmount/superblock referenced until final
namespace teardown, i.e. a resource leak on this rare failure edge.

Unwind it by calling mntput(ns->mq_mnt) before dropping user_ns and
freeing the IPC namespace. This mirrors the normal ordering used in
free_ipc_ns().

Link: https://lkml.kernel.org/r/20251021181341.670297-1-vlad_kulikov_c@pm.me
Signed-off-by: Vlad Kulikov <vlad_kulikov_c@pm.me>
Reviewed-by: Jan Kara <jack@suse.cz>
Cc: Aleksa Sarai <cyphar@cyphar.com>
Cc: Christian Brauner <brauner@kernel.org>
Cc: David Hildenbrand <david@redhat.com>
Cc: Ma Wupeng <mawupeng1@huawei.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>

authored by

Vlad Kulikov and committed by
Andrew Morton
7229d74e aa5b6a72

+5 -4
+5 -4
ipc/namespace.c
··· 75 75 76 76 err = -ENOMEM; 77 77 if (!setup_mq_sysctls(ns)) 78 - goto fail_put; 78 + goto fail_mq_mount; 79 79 80 80 if (!setup_ipc_sysctls(ns)) 81 - goto fail_mq; 81 + goto fail_mq_sysctls; 82 82 83 83 err = msg_init_ns(ns); 84 84 if (err) ··· 92 92 93 93 fail_ipc: 94 94 retire_ipc_sysctls(ns); 95 - fail_mq: 95 + fail_mq_sysctls: 96 96 retire_mq_sysctls(ns); 97 - 97 + fail_mq_mount: 98 + mntput(ns->mq_mnt); 98 99 fail_put: 99 100 put_user_ns(ns->user_ns); 100 101 ns_common_free(ns);