diff options
| author | Christian Brauner <brauner@kernel.org> | 2025-10-29 13:20:29 +0100 |
|---|---|---|
| committer | Christian Brauner <brauner@kernel.org> | 2025-11-03 17:41:17 +0100 |
| commit | 3c1a52f2a6c865464babe7a85c2796aa31cc9744 (patch) | |
| tree | 471aadad5cbb7065da904ea1b3c28c4bf3746282 /kernel/nscommon.c | |
| parent | 3760342fd6312416491d536144e39297fa5b1950 (diff) | |
nstree: maintain list of owned namespaces
The namespace tree doesn't express the ownership concept of namespace
appropriately. Maintain a list of directly owned namespaces per user
namespace. This will allow userspace and the kernel to use the listns()
system call to walk the namespace tree by owning user namespace. The
rbtree is used to find the relevant namespace entry point which allows
to continue iteration and the owner list can be used to walk the tree
completely lock free.
Link: https://patch.msgid.link/20251029-work-namespace-nstree-listns-v4-16-2e6f823ebdc0@kernel.org
Signed-off-by: Christian Brauner <brauner@kernel.org>
Diffstat (limited to 'kernel/nscommon.c')
| -rw-r--r-- | kernel/nscommon.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/kernel/nscommon.c b/kernel/nscommon.c index 17a6ea44f054..f0b7971392d2 100644 --- a/kernel/nscommon.c +++ b/kernel/nscommon.c @@ -63,7 +63,11 @@ int __ns_common_init(struct ns_common *ns, u32 ns_type, const struct proc_ns_ope ns->ns_type = ns_type; RB_CLEAR_NODE(&ns->ns_tree_node); RB_CLEAR_NODE(&ns->ns_unified_tree_node); + RB_CLEAR_NODE(&ns->ns_owner_tree_node); INIT_LIST_HEAD(&ns->ns_list_node); + ns->ns_owner_tree = RB_ROOT; + INIT_LIST_HEAD(&ns->ns_owner); + INIT_LIST_HEAD(&ns->ns_owner_entry); #ifdef CONFIG_DEBUG_VFS ns_debug(ns, ops); |
