mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs.git
synced 2026-10-28 21:02:43 +01:00
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/[email protected] Signed-off-by: Vlad Kulikov <[email protected]> Reviewed-by: Jan Kara <[email protected]> Cc: Aleksa Sarai <[email protected]> Cc: Christian Brauner <[email protected]> Cc: David Hildenbrand <[email protected]> Cc: Ma Wupeng <[email protected]> Signed-off-by: Andrew Morton <[email protected]>
This commit is contained in:
1 parent
aa5b6a72cc
commit
7229d74e5e
1 file changed
+5
-4
+5
-4
@@ -75,10 +75,10 @@ static struct ipc_namespace *create_ipc_ns(struct user_namespace *user_ns,
|
||||
|
||||
err = -ENOMEM;
|
||||
if (!setup_mq_sysctls(ns))
|
||||
goto fail_put;
|
||||
goto fail_mq_mount;
|
||||
|
||||
if (!setup_ipc_sysctls(ns))
|
||||
goto fail_mq;
|
||||
goto fail_mq_sysctls;
|
||||
|
||||
err = msg_init_ns(ns);
|
||||
if (err)
|
||||
@@ -92,9 +92,10 @@ static struct ipc_namespace *create_ipc_ns(struct user_namespace *user_ns,
|
||||
|
||||
fail_ipc:
|
||||
retire_ipc_sysctls(ns);
|
||||
fail_mq:
|
||||
fail_mq_sysctls:
|
||||
retire_mq_sysctls(ns);
|
||||
|
||||
fail_mq_mount:
|
||||
mntput(ns->mq_mnt);
|
||||
fail_put:
|
||||
put_user_ns(ns->user_ns);
|
||||
ns_common_free(ns);
|
||||
|
||||
Reference in new issue
Block a user