xref: /linux/kernel/nscommon.c (revision be5f21d3985f00827e09b798f7a07ebd6dd7f54a)
1f74ca6daSChristian Brauner // SPDX-License-Identifier: GPL-2.0-only
2f74ca6daSChristian Brauner 
3f74ca6daSChristian Brauner #include <linux/ns_common.h>
45612ff3eSChristian Brauner #include <linux/proc_ns.h>
5f74ca6daSChristian Brauner 
65612ff3eSChristian Brauner int __ns_common_init(struct ns_common *ns, const struct proc_ns_operations *ops, int inum)
7f74ca6daSChristian Brauner {
8f74ca6daSChristian Brauner 	refcount_set(&ns->count, 1);
9f74ca6daSChristian Brauner 	ns->stashed = NULL;
10f74ca6daSChristian Brauner 	ns->ops = ops;
11f74ca6daSChristian Brauner 	ns->ns_id = 0;
12f74ca6daSChristian Brauner 	RB_CLEAR_NODE(&ns->ns_tree_node);
13f74ca6daSChristian Brauner 	INIT_LIST_HEAD(&ns->ns_list_node);
145612ff3eSChristian Brauner 
155612ff3eSChristian Brauner 	if (inum) {
165612ff3eSChristian Brauner 		ns->inum = inum;
17f74ca6daSChristian Brauner 		return 0;
18f74ca6daSChristian Brauner 	}
195612ff3eSChristian Brauner 	return proc_alloc_inum(&ns->inum);
205612ff3eSChristian Brauner }
21*be5f21d3SChristian Brauner 
22*be5f21d3SChristian Brauner void __ns_common_free(struct ns_common *ns)
23*be5f21d3SChristian Brauner {
24*be5f21d3SChristian Brauner 	proc_free_inum(ns->inum);
25*be5f21d3SChristian Brauner }
26