[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <202510292238.OTyD5CXw-lkp@intel.com>
Date: Wed, 29 Oct 2025 22:55:54 +0800
From: kernel test robot <lkp@...el.com>
To: Christian Brauner <brauner@...nel.org>, linux-fsdevel@...r.kernel.org,
Josef Bacik <josef@...icpanda.com>,
Jeff Layton <jlayton@...nel.org>
Cc: oe-kbuild-all@...ts.linux.dev, Jann Horn <jannh@...gle.com>,
Mike Yuan <me@...dnzj.com>,
Zbigniew Jędrzejewski-Szmek <zbyszek@...waw.pl>,
Lennart Poettering <mzxreary@...inter.de>,
Daan De Meyer <daan.j.demeyer@...il.com>,
Aleksa Sarai <cyphar@...har.com>,
Amir Goldstein <amir73il@...il.com>, Tejun Heo <tj@...nel.org>,
Johannes Weiner <hannes@...xchg.org>,
Thomas Gleixner <tglx@...utronix.de>,
Alexander Viro <viro@...iv.linux.org.uk>, Jan Kara <jack@...e.cz>,
linux-kernel@...r.kernel.org, cgroups@...r.kernel.org,
bpf@...r.kernel.org, Eric Dumazet <edumazet@...gle.com>,
Jakub Kicinski <kuba@...nel.org>, netdev@...r.kernel.org,
Arnd Bergmann <arnd@...db.de>,
Christian Brauner <brauner@...nel.org>
Subject: Re: [PATCH v4 13/72] nstree: introduce a unified tree
Hi Christian,
kernel test robot noticed the following build errors:
[auto build test ERROR on 3a8660878839faadb4f1a6dd72c3179c1df56787]
url: https://github.com/intel-lab-lkp/linux/commits/Christian-Brauner/libfs-allow-to-specify-s_d_flags/20251029-205841
base: 3a8660878839faadb4f1a6dd72c3179c1df56787
patch link: https://lore.kernel.org/r/20251029-work-namespace-nstree-listns-v4-13-2e6f823ebdc0%40kernel.org
patch subject: [PATCH v4 13/72] nstree: introduce a unified tree
config: m68k-allnoconfig (https://download.01.org/0day-ci/archive/20251029/202510292238.OTyD5CXw-lkp@intel.com/config)
compiler: m68k-linux-gcc (GCC) 15.1.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20251029/202510292238.OTyD5CXw-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@...el.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202510292238.OTyD5CXw-lkp@intel.com/
All errors (new ones prefixed by >>):
In file included from include/linux/init.h:5,
from include/linux/printk.h:6,
from include/asm-generic/bug.h:22,
from arch/m68k/include/asm/bug.h:32,
from include/linux/bug.h:5,
from include/linux/thread_info.h:13,
from include/asm-generic/preempt.h:5,
from ./arch/m68k/include/generated/asm/preempt.h:1,
from include/linux/preempt.h:79,
from arch/m68k/include/asm/irqflags.h:6,
from include/linux/irqflags.h:18,
from arch/m68k/include/asm/atomic.h:6,
from include/linux/atomic.h:7,
from include/linux/refcount.h:104,
from include/linux/ns_common.h:5,
from include/linux/nstree.h:5,
from kernel/nstree.c:3:
kernel/nstree.c: In function '__ns_tree_remove':
>> kernel/nstree.c:170:48: error: 'struct ns_tree' has no member named 'type'
170 | VFS_WARN_ON_ONCE(ns->ns_type != ns_tree->type);
| ^~
include/linux/build_bug.h:30:63: note: in definition of macro 'BUILD_BUG_ON_INVALID'
30 | #define BUILD_BUG_ON_INVALID(e) ((void)(sizeof((__force long)(e))))
| ^
kernel/nstree.c:170:9: note: in expansion of macro 'VFS_WARN_ON_ONCE'
170 | VFS_WARN_ON_ONCE(ns->ns_type != ns_tree->type);
| ^~~~~~~~~~~~~~~~
kernel/nstree.c: In function '__ns_tree_adjoined_rcu':
kernel/nstree.c:297:98: error: 'struct ns_tree' has no member named 'type'
297 | VFS_WARN_ON_ONCE(list_entry_rcu(list, struct ns_common, ns_list_node)->ns_type != ns_tree->type);
| ^~
include/linux/build_bug.h:30:63: note: in definition of macro 'BUILD_BUG_ON_INVALID'
30 | #define BUILD_BUG_ON_INVALID(e) ((void)(sizeof((__force long)(e))))
| ^
kernel/nstree.c:297:9: note: in expansion of macro 'VFS_WARN_ON_ONCE'
297 | VFS_WARN_ON_ONCE(list_entry_rcu(list, struct ns_common, ns_list_node)->ns_type != ns_tree->type);
| ^~~~~~~~~~~~~~~~
vim +170 kernel/nstree.c
885fc8ac0a4dc7 Christian Brauner 2025-09-12 2
885fc8ac0a4dc7 Christian Brauner 2025-09-12 @3 #include <linux/nstree.h>
885fc8ac0a4dc7 Christian Brauner 2025-09-12 4 #include <linux/proc_ns.h>
885fc8ac0a4dc7 Christian Brauner 2025-09-12 5 #include <linux/vfsdebug.h>
885fc8ac0a4dc7 Christian Brauner 2025-09-12 6
01da9c6ec4269b Christian Brauner 2025-10-29 7 __cacheline_aligned_in_smp DEFINE_SEQLOCK(ns_tree_lock);
01da9c6ec4269b Christian Brauner 2025-10-29 8 static struct rb_root ns_unified_tree = RB_ROOT; /* protected by ns_tree_lock */
01da9c6ec4269b Christian Brauner 2025-10-29 9
10cdfcd37ade7c Christian Brauner 2025-09-24 10 /**
10cdfcd37ade7c Christian Brauner 2025-09-24 11 * struct ns_tree - Namespace tree
10cdfcd37ade7c Christian Brauner 2025-09-24 12 * @ns_tree: Rbtree of namespaces of a particular type
10cdfcd37ade7c Christian Brauner 2025-09-24 13 * @ns_list: Sequentially walkable list of all namespaces of this type
10cdfcd37ade7c Christian Brauner 2025-09-24 14 * @type: type of namespaces in this tree
10cdfcd37ade7c Christian Brauner 2025-09-24 15 */
10cdfcd37ade7c Christian Brauner 2025-09-24 16 struct ns_tree {
10cdfcd37ade7c Christian Brauner 2025-09-24 17 struct rb_root ns_tree;
10cdfcd37ade7c Christian Brauner 2025-09-24 18 struct list_head ns_list;
01da9c6ec4269b Christian Brauner 2025-10-29 19 #ifdef CONFIG_DEBUG_VFS
10cdfcd37ade7c Christian Brauner 2025-09-24 20 int type;
01da9c6ec4269b Christian Brauner 2025-10-29 21 #endif
10cdfcd37ade7c Christian Brauner 2025-09-24 22 };
10cdfcd37ade7c Christian Brauner 2025-09-24 23
885fc8ac0a4dc7 Christian Brauner 2025-09-12 24 struct ns_tree mnt_ns_tree = {
885fc8ac0a4dc7 Christian Brauner 2025-09-12 25 .ns_tree = RB_ROOT,
885fc8ac0a4dc7 Christian Brauner 2025-09-12 26 .ns_list = LIST_HEAD_INIT(mnt_ns_tree.ns_list),
01da9c6ec4269b Christian Brauner 2025-10-29 27 #ifdef CONFIG_DEBUG_VFS
885fc8ac0a4dc7 Christian Brauner 2025-09-12 28 .type = CLONE_NEWNS,
01da9c6ec4269b Christian Brauner 2025-10-29 29 #endif
885fc8ac0a4dc7 Christian Brauner 2025-09-12 30 };
885fc8ac0a4dc7 Christian Brauner 2025-09-12 31
885fc8ac0a4dc7 Christian Brauner 2025-09-12 32 struct ns_tree net_ns_tree = {
885fc8ac0a4dc7 Christian Brauner 2025-09-12 33 .ns_tree = RB_ROOT,
885fc8ac0a4dc7 Christian Brauner 2025-09-12 34 .ns_list = LIST_HEAD_INIT(net_ns_tree.ns_list),
01da9c6ec4269b Christian Brauner 2025-10-29 35 #ifdef CONFIG_DEBUG_VFS
885fc8ac0a4dc7 Christian Brauner 2025-09-12 36 .type = CLONE_NEWNET,
01da9c6ec4269b Christian Brauner 2025-10-29 37 #endif
885fc8ac0a4dc7 Christian Brauner 2025-09-12 38 };
885fc8ac0a4dc7 Christian Brauner 2025-09-12 39 EXPORT_SYMBOL_GPL(net_ns_tree);
885fc8ac0a4dc7 Christian Brauner 2025-09-12 40
885fc8ac0a4dc7 Christian Brauner 2025-09-12 41 struct ns_tree uts_ns_tree = {
885fc8ac0a4dc7 Christian Brauner 2025-09-12 42 .ns_tree = RB_ROOT,
885fc8ac0a4dc7 Christian Brauner 2025-09-12 43 .ns_list = LIST_HEAD_INIT(uts_ns_tree.ns_list),
01da9c6ec4269b Christian Brauner 2025-10-29 44 #ifdef CONFIG_DEBUG_VFS
885fc8ac0a4dc7 Christian Brauner 2025-09-12 45 .type = CLONE_NEWUTS,
01da9c6ec4269b Christian Brauner 2025-10-29 46 #endif
885fc8ac0a4dc7 Christian Brauner 2025-09-12 47 };
885fc8ac0a4dc7 Christian Brauner 2025-09-12 48
885fc8ac0a4dc7 Christian Brauner 2025-09-12 49 struct ns_tree user_ns_tree = {
885fc8ac0a4dc7 Christian Brauner 2025-09-12 50 .ns_tree = RB_ROOT,
885fc8ac0a4dc7 Christian Brauner 2025-09-12 51 .ns_list = LIST_HEAD_INIT(user_ns_tree.ns_list),
01da9c6ec4269b Christian Brauner 2025-10-29 52 #ifdef CONFIG_DEBUG_VFS
885fc8ac0a4dc7 Christian Brauner 2025-09-12 53 .type = CLONE_NEWUSER,
01da9c6ec4269b Christian Brauner 2025-10-29 54 #endif
885fc8ac0a4dc7 Christian Brauner 2025-09-12 55 };
885fc8ac0a4dc7 Christian Brauner 2025-09-12 56
885fc8ac0a4dc7 Christian Brauner 2025-09-12 57 struct ns_tree ipc_ns_tree = {
885fc8ac0a4dc7 Christian Brauner 2025-09-12 58 .ns_tree = RB_ROOT,
885fc8ac0a4dc7 Christian Brauner 2025-09-12 59 .ns_list = LIST_HEAD_INIT(ipc_ns_tree.ns_list),
01da9c6ec4269b Christian Brauner 2025-10-29 60 #ifdef CONFIG_DEBUG_VFS
885fc8ac0a4dc7 Christian Brauner 2025-09-12 61 .type = CLONE_NEWIPC,
01da9c6ec4269b Christian Brauner 2025-10-29 62 #endif
885fc8ac0a4dc7 Christian Brauner 2025-09-12 63 };
885fc8ac0a4dc7 Christian Brauner 2025-09-12 64
885fc8ac0a4dc7 Christian Brauner 2025-09-12 65 struct ns_tree pid_ns_tree = {
885fc8ac0a4dc7 Christian Brauner 2025-09-12 66 .ns_tree = RB_ROOT,
885fc8ac0a4dc7 Christian Brauner 2025-09-12 67 .ns_list = LIST_HEAD_INIT(pid_ns_tree.ns_list),
01da9c6ec4269b Christian Brauner 2025-10-29 68 #ifdef CONFIG_DEBUG_VFS
885fc8ac0a4dc7 Christian Brauner 2025-09-12 69 .type = CLONE_NEWPID,
01da9c6ec4269b Christian Brauner 2025-10-29 70 #endif
885fc8ac0a4dc7 Christian Brauner 2025-09-12 71 };
885fc8ac0a4dc7 Christian Brauner 2025-09-12 72
885fc8ac0a4dc7 Christian Brauner 2025-09-12 73 struct ns_tree cgroup_ns_tree = {
885fc8ac0a4dc7 Christian Brauner 2025-09-12 74 .ns_tree = RB_ROOT,
885fc8ac0a4dc7 Christian Brauner 2025-09-12 75 .ns_list = LIST_HEAD_INIT(cgroup_ns_tree.ns_list),
01da9c6ec4269b Christian Brauner 2025-10-29 76 #ifdef CONFIG_DEBUG_VFS
885fc8ac0a4dc7 Christian Brauner 2025-09-12 77 .type = CLONE_NEWCGROUP,
01da9c6ec4269b Christian Brauner 2025-10-29 78 #endif
885fc8ac0a4dc7 Christian Brauner 2025-09-12 79 };
885fc8ac0a4dc7 Christian Brauner 2025-09-12 80
885fc8ac0a4dc7 Christian Brauner 2025-09-12 81 struct ns_tree time_ns_tree = {
885fc8ac0a4dc7 Christian Brauner 2025-09-12 82 .ns_tree = RB_ROOT,
885fc8ac0a4dc7 Christian Brauner 2025-09-12 83 .ns_list = LIST_HEAD_INIT(time_ns_tree.ns_list),
01da9c6ec4269b Christian Brauner 2025-10-29 84 #ifdef CONFIG_DEBUG_VFS
885fc8ac0a4dc7 Christian Brauner 2025-09-12 85 .type = CLONE_NEWTIME,
01da9c6ec4269b Christian Brauner 2025-10-29 86 #endif
885fc8ac0a4dc7 Christian Brauner 2025-09-12 87 };
885fc8ac0a4dc7 Christian Brauner 2025-09-12 88
885fc8ac0a4dc7 Christian Brauner 2025-09-12 89 DEFINE_COOKIE(namespace_cookie);
885fc8ac0a4dc7 Christian Brauner 2025-09-12 90
885fc8ac0a4dc7 Christian Brauner 2025-09-12 91 static inline struct ns_common *node_to_ns(const struct rb_node *node)
885fc8ac0a4dc7 Christian Brauner 2025-09-12 92 {
885fc8ac0a4dc7 Christian Brauner 2025-09-12 93 if (!node)
885fc8ac0a4dc7 Christian Brauner 2025-09-12 94 return NULL;
885fc8ac0a4dc7 Christian Brauner 2025-09-12 95 return rb_entry(node, struct ns_common, ns_tree_node);
885fc8ac0a4dc7 Christian Brauner 2025-09-12 96 }
885fc8ac0a4dc7 Christian Brauner 2025-09-12 97
01da9c6ec4269b Christian Brauner 2025-10-29 98 static inline struct ns_common *node_to_ns_unified(const struct rb_node *node)
01da9c6ec4269b Christian Brauner 2025-10-29 99 {
01da9c6ec4269b Christian Brauner 2025-10-29 100 if (!node)
01da9c6ec4269b Christian Brauner 2025-10-29 101 return NULL;
01da9c6ec4269b Christian Brauner 2025-10-29 102 return rb_entry(node, struct ns_common, ns_unified_tree_node);
01da9c6ec4269b Christian Brauner 2025-10-29 103 }
01da9c6ec4269b Christian Brauner 2025-10-29 104
885fc8ac0a4dc7 Christian Brauner 2025-09-12 105 static inline int ns_cmp(struct rb_node *a, const struct rb_node *b)
885fc8ac0a4dc7 Christian Brauner 2025-09-12 106 {
885fc8ac0a4dc7 Christian Brauner 2025-09-12 107 struct ns_common *ns_a = node_to_ns(a);
885fc8ac0a4dc7 Christian Brauner 2025-09-12 108 struct ns_common *ns_b = node_to_ns(b);
885fc8ac0a4dc7 Christian Brauner 2025-09-12 109 u64 ns_id_a = ns_a->ns_id;
885fc8ac0a4dc7 Christian Brauner 2025-09-12 110 u64 ns_id_b = ns_b->ns_id;
885fc8ac0a4dc7 Christian Brauner 2025-09-12 111
885fc8ac0a4dc7 Christian Brauner 2025-09-12 112 if (ns_id_a < ns_id_b)
885fc8ac0a4dc7 Christian Brauner 2025-09-12 113 return -1;
885fc8ac0a4dc7 Christian Brauner 2025-09-12 114 if (ns_id_a > ns_id_b)
885fc8ac0a4dc7 Christian Brauner 2025-09-12 115 return 1;
885fc8ac0a4dc7 Christian Brauner 2025-09-12 116 return 0;
885fc8ac0a4dc7 Christian Brauner 2025-09-12 117 }
885fc8ac0a4dc7 Christian Brauner 2025-09-12 118
01da9c6ec4269b Christian Brauner 2025-10-29 119 static inline int ns_cmp_unified(struct rb_node *a, const struct rb_node *b)
01da9c6ec4269b Christian Brauner 2025-10-29 120 {
01da9c6ec4269b Christian Brauner 2025-10-29 121 struct ns_common *ns_a = node_to_ns_unified(a);
01da9c6ec4269b Christian Brauner 2025-10-29 122 struct ns_common *ns_b = node_to_ns_unified(b);
01da9c6ec4269b Christian Brauner 2025-10-29 123 u64 ns_id_a = ns_a->ns_id;
01da9c6ec4269b Christian Brauner 2025-10-29 124 u64 ns_id_b = ns_b->ns_id;
01da9c6ec4269b Christian Brauner 2025-10-29 125
01da9c6ec4269b Christian Brauner 2025-10-29 126 if (ns_id_a < ns_id_b)
01da9c6ec4269b Christian Brauner 2025-10-29 127 return -1;
01da9c6ec4269b Christian Brauner 2025-10-29 128 if (ns_id_a > ns_id_b)
01da9c6ec4269b Christian Brauner 2025-10-29 129 return 1;
01da9c6ec4269b Christian Brauner 2025-10-29 130 return 0;
01da9c6ec4269b Christian Brauner 2025-10-29 131 }
01da9c6ec4269b Christian Brauner 2025-10-29 132
885fc8ac0a4dc7 Christian Brauner 2025-09-12 133 void __ns_tree_add_raw(struct ns_common *ns, struct ns_tree *ns_tree)
885fc8ac0a4dc7 Christian Brauner 2025-09-12 134 {
885fc8ac0a4dc7 Christian Brauner 2025-09-12 135 struct rb_node *node, *prev;
885fc8ac0a4dc7 Christian Brauner 2025-09-12 136
885fc8ac0a4dc7 Christian Brauner 2025-09-12 137 VFS_WARN_ON_ONCE(!ns->ns_id);
885fc8ac0a4dc7 Christian Brauner 2025-09-12 138
01da9c6ec4269b Christian Brauner 2025-10-29 139 write_seqlock(&ns_tree_lock);
885fc8ac0a4dc7 Christian Brauner 2025-09-12 140
885fc8ac0a4dc7 Christian Brauner 2025-09-12 141 node = rb_find_add_rcu(&ns->ns_tree_node, &ns_tree->ns_tree, ns_cmp);
885fc8ac0a4dc7 Christian Brauner 2025-09-12 142 /*
885fc8ac0a4dc7 Christian Brauner 2025-09-12 143 * If there's no previous entry simply add it after the
885fc8ac0a4dc7 Christian Brauner 2025-09-12 144 * head and if there is add it after the previous entry.
885fc8ac0a4dc7 Christian Brauner 2025-09-12 145 */
885fc8ac0a4dc7 Christian Brauner 2025-09-12 146 prev = rb_prev(&ns->ns_tree_node);
885fc8ac0a4dc7 Christian Brauner 2025-09-12 147 if (!prev)
885fc8ac0a4dc7 Christian Brauner 2025-09-12 148 list_add_rcu(&ns->ns_list_node, &ns_tree->ns_list);
885fc8ac0a4dc7 Christian Brauner 2025-09-12 149 else
885fc8ac0a4dc7 Christian Brauner 2025-09-12 150 list_add_rcu(&ns->ns_list_node, &node_to_ns(prev)->ns_list_node);
885fc8ac0a4dc7 Christian Brauner 2025-09-12 151
01da9c6ec4269b Christian Brauner 2025-10-29 152 rb_find_add_rcu(&ns->ns_unified_tree_node, &ns_unified_tree, ns_cmp_unified);
01da9c6ec4269b Christian Brauner 2025-10-29 153 write_sequnlock(&ns_tree_lock);
885fc8ac0a4dc7 Christian Brauner 2025-09-12 154
885fc8ac0a4dc7 Christian Brauner 2025-09-12 155 VFS_WARN_ON_ONCE(node);
cb9044bf715ece Christian Brauner 2025-10-29 156
cb9044bf715ece Christian Brauner 2025-10-29 157 /*
cb9044bf715ece Christian Brauner 2025-10-29 158 * Take an active reference on the owner namespace. This ensures
cb9044bf715ece Christian Brauner 2025-10-29 159 * that the owner remains visible while any of its child namespaces
cb9044bf715ece Christian Brauner 2025-10-29 160 * are active. For init namespaces this is a no-op as ns_owner()
cb9044bf715ece Christian Brauner 2025-10-29 161 * returns NULL for namespaces owned by init_user_ns.
cb9044bf715ece Christian Brauner 2025-10-29 162 */
cb9044bf715ece Christian Brauner 2025-10-29 163 __ns_ref_active_get_owner(ns);
885fc8ac0a4dc7 Christian Brauner 2025-09-12 164 }
885fc8ac0a4dc7 Christian Brauner 2025-09-12 165
885fc8ac0a4dc7 Christian Brauner 2025-09-12 166 void __ns_tree_remove(struct ns_common *ns, struct ns_tree *ns_tree)
885fc8ac0a4dc7 Christian Brauner 2025-09-12 167 {
885fc8ac0a4dc7 Christian Brauner 2025-09-12 168 VFS_WARN_ON_ONCE(RB_EMPTY_NODE(&ns->ns_tree_node));
885fc8ac0a4dc7 Christian Brauner 2025-09-12 169 VFS_WARN_ON_ONCE(list_empty(&ns->ns_list_node));
4055526d35746c Christian Brauner 2025-09-24 @170 VFS_WARN_ON_ONCE(ns->ns_type != ns_tree->type);
885fc8ac0a4dc7 Christian Brauner 2025-09-12 171
01da9c6ec4269b Christian Brauner 2025-10-29 172 write_seqlock(&ns_tree_lock);
885fc8ac0a4dc7 Christian Brauner 2025-09-12 173 rb_erase(&ns->ns_tree_node, &ns_tree->ns_tree);
01da9c6ec4269b Christian Brauner 2025-10-29 174 rb_erase(&ns->ns_unified_tree_node, &ns_unified_tree);
885fc8ac0a4dc7 Christian Brauner 2025-09-12 175 list_bidir_del_rcu(&ns->ns_list_node);
885fc8ac0a4dc7 Christian Brauner 2025-09-12 176 RB_CLEAR_NODE(&ns->ns_tree_node);
01da9c6ec4269b Christian Brauner 2025-10-29 177 write_sequnlock(&ns_tree_lock);
885fc8ac0a4dc7 Christian Brauner 2025-09-12 178 }
885fc8ac0a4dc7 Christian Brauner 2025-09-12 179 EXPORT_SYMBOL_GPL(__ns_tree_remove);
885fc8ac0a4dc7 Christian Brauner 2025-09-12 180
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
Powered by blists - more mailing lists