diff options
| author | Al Viro <viro@zeniv.linux.org.uk> | 2025-08-26 17:04:44 -0400 |
|---|---|---|
| committer | Al Viro <viro@zeniv.linux.org.uk> | 2025-09-17 15:58:28 -0400 |
| commit | 7bb4c851dcb7a4ec0b4ba7fcf3f451da0894969d (patch) | |
| tree | b2c3655aa5dececce68e4e0ccd040dc10cf2870f /fs/namespace.c | |
| parent | 1b966c4471e6c3862a14f80aeb316ef636d40f84 (diff) | |
| download | random-7bb4c851dcb7a4ec0b4ba7fcf3f451da0894969d.tar.gz | |
copy_mnt_ns(): use the regular mechanism for freeing empty mnt_ns on failure
Now that free_mnt_ns() works prior to mnt_ns_tree_add(), there's no need for
an open-coded analogue free_mnt_ns() there - yes, we do avoid one call_rcu()
use per failing call of clone() or unshare(), if they fail due to OOM in that
particular spot, but it's not really worth bothering.
Reviewed-by: Christian Brauner <brauner@kernel.org>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'fs/namespace.c')
| -rw-r--r-- | fs/namespace.c | 4 |
1 files changed, 1 insertions, 3 deletions
diff --git a/fs/namespace.c b/fs/namespace.c index 5968c44cc38aa6..b4374d6d4bae2e 100644 --- a/fs/namespace.c +++ b/fs/namespace.c @@ -4184,10 +4184,8 @@ struct mnt_namespace *copy_mnt_ns(unsigned long flags, struct mnt_namespace *ns, copy_flags |= CL_SLAVE; new = copy_tree(old, old->mnt.mnt_root, copy_flags); if (IS_ERR(new)) { + emptied_ns = new_ns; namespace_unlock(); - ns_free_inum(&new_ns->ns); - dec_mnt_namespaces(new_ns->ucounts); - mnt_ns_release(new_ns); return ERR_CAST(new); } if (user_ns != ns->user_ns) { |
