mirror of
https://github.com/torvalds/linux.git
synced 2026-05-25 07:33:19 +02:00
Merge patch series "nsfs: expose the stable inode numbers in a public header"
Christian Brauner <brauner@kernel.org> says: Userspace heavily relies on the root inode numbers for namespaces to identify the initial namespaces. That's already a hard dependency. So we cannot change that anymore. Move the initial inode numbers to a public header and align the only two namespaces that currently don't do that with all the other namespaces. * patches from https://lore.kernel.org/20250606-work-nsfs-v1-0-b8749c9a8844@kernel.org: mntns: use stable inode number for initial mount ns netns: use stable inode number for initial mount ns nsfs: move root inode number to uapi Link: https://lore.kernel.org/20250606-work-nsfs-v1-0-b8749c9a8844@kernel.org Signed-off-by: Christian Brauner <brauner@kernel.org>
This commit is contained in:
commit
cd267cdef5
|
|
@ -6203,9 +6203,11 @@ static void __init init_mount_tree(void)
|
|||
if (IS_ERR(mnt))
|
||||
panic("Can't create rootfs");
|
||||
|
||||
ns = alloc_mnt_ns(&init_user_ns, false);
|
||||
ns = alloc_mnt_ns(&init_user_ns, true);
|
||||
if (IS_ERR(ns))
|
||||
panic("Can't allocate initial namespace");
|
||||
ns->seq = atomic64_inc_return(&mnt_ns_seq);
|
||||
ns->ns.inum = PROC_MNT_INIT_INO;
|
||||
m = real_mount(mnt);
|
||||
ns->root = m;
|
||||
ns->nr_mounts = 1;
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@
|
|||
#define _LINUX_PROC_NS_H
|
||||
|
||||
#include <linux/ns_common.h>
|
||||
#include <uapi/linux/nsfs.h>
|
||||
|
||||
struct pid_namespace;
|
||||
struct nsset;
|
||||
|
|
@ -40,12 +41,14 @@ extern const struct proc_ns_operations timens_for_children_operations;
|
|||
*/
|
||||
enum {
|
||||
PROC_ROOT_INO = 1,
|
||||
PROC_IPC_INIT_INO = 0xEFFFFFFFU,
|
||||
PROC_UTS_INIT_INO = 0xEFFFFFFEU,
|
||||
PROC_USER_INIT_INO = 0xEFFFFFFDU,
|
||||
PROC_PID_INIT_INO = 0xEFFFFFFCU,
|
||||
PROC_CGROUP_INIT_INO = 0xEFFFFFFBU,
|
||||
PROC_TIME_INIT_INO = 0xEFFFFFFAU,
|
||||
PROC_IPC_INIT_INO = IPC_NS_INIT_INO,
|
||||
PROC_UTS_INIT_INO = UTS_NS_INIT_INO,
|
||||
PROC_USER_INIT_INO = USER_NS_INIT_INO,
|
||||
PROC_PID_INIT_INO = PID_NS_INIT_INO,
|
||||
PROC_CGROUP_INIT_INO = CGROUP_NS_INIT_INO,
|
||||
PROC_TIME_INIT_INO = TIME_NS_INIT_INO,
|
||||
PROC_NET_INIT_INO = NET_NS_INIT_INO,
|
||||
PROC_MNT_INIT_INO = MNT_NS_INIT_INO,
|
||||
};
|
||||
|
||||
#ifdef CONFIG_PROC_FS
|
||||
|
|
|
|||
|
|
@ -42,4 +42,15 @@ struct mnt_ns_info {
|
|||
/* Get previous namespace. */
|
||||
#define NS_MNT_GET_PREV _IOR(NSIO, 12, struct mnt_ns_info)
|
||||
|
||||
enum init_ns_ino {
|
||||
IPC_NS_INIT_INO = 0xEFFFFFFFU,
|
||||
UTS_NS_INIT_INO = 0xEFFFFFFEU,
|
||||
USER_NS_INIT_INO = 0xEFFFFFFDU,
|
||||
PID_NS_INIT_INO = 0xEFFFFFFCU,
|
||||
CGROUP_NS_INIT_INO = 0xEFFFFFFBU,
|
||||
TIME_NS_INIT_INO = 0xEFFFFFFAU,
|
||||
NET_NS_INIT_INO = 0xEFFFFFF9U,
|
||||
MNT_NS_INIT_INO = 0xEFFFFFF8U,
|
||||
};
|
||||
|
||||
#endif /* __LINUX_NSFS_H */
|
||||
|
|
|
|||
|
|
@ -796,11 +796,19 @@ static __net_init int net_ns_net_init(struct net *net)
|
|||
#ifdef CONFIG_NET_NS
|
||||
net->ns.ops = &netns_operations;
|
||||
#endif
|
||||
if (net == &init_net) {
|
||||
net->ns.inum = PROC_NET_INIT_INO;
|
||||
return 0;
|
||||
}
|
||||
return ns_alloc_inum(&net->ns);
|
||||
}
|
||||
|
||||
static __net_exit void net_ns_net_exit(struct net *net)
|
||||
{
|
||||
/*
|
||||
* Initial network namespace doesn't exit so we don't need any
|
||||
* special checks here.
|
||||
*/
|
||||
ns_free_inum(&net->ns);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user