ns_common
struct ns_common;
int open_namespace(struct ns_common *ns);
struct file *open_namespace_file(struct ns_common *ns);
struct ns_common ns;
static inline struct mnt_namespace *to_mnt_ns(struct ns_common *ns)
struct ns_common *ns;
struct ns_common *ns;
struct ns_common *from_mnt_ns(struct mnt_namespace *mnt)
struct ns_common *ns;
struct ns_common *ns;
struct ns_common *ns;
static struct ns_common *mntns_get(struct task_struct *task)
struct ns_common *ns = NULL;
static void mntns_put(struct ns_common *ns)
static int mntns_install(struct nsset *nsset, struct ns_common *ns)
static struct user_namespace *mntns_owner(struct ns_common *ns)
struct file *open_namespace_file(struct ns_common *ns)
int open_namespace(struct ns_common *ns)
int open_related_ns(struct ns_common *ns,
struct ns_common *(*get_ns)(struct ns_common *ns))
struct ns_common *relative;
struct ns_common *ns;
struct ns_common *ns;
bool ns_match(const struct ns_common *ns, dev_t dev, ino_t ino)
const struct ns_common *ns = inode->i_private;
struct ns_common *ns = data;
struct ns_common *ns = data;
struct ns_common *ns = inode->i_private;
struct ns_common *ns = inode->i_private;
bool is_current_namespace(struct ns_common *ns)
struct ns_common *ns;
struct ns_common *ns = inode->i_private;
struct ns_common *ns;
static struct ns_common *ns_get_path_task(void *private_data)
struct ns_common *ns_common = NULL;
ns_common = to_ns_common(nsp->cgroup_ns);
ns_common = to_ns_common(nsp->ipc_ns);
ns_common = to_ns_common(nsp->mnt_ns);
ns_common = to_ns_common(nsp->net_ns);
ns_common = to_ns_common(nsp->pid_ns_for_children);
ns_common = to_ns_common(nsp->time_ns);
ns_common = to_ns_common(nsp->time_ns_for_children);
ns_common = to_ns_common(nsp->uts_ns);
ns_common = to_ns_common(user_ns);
ns_common = to_ns_common(pid_ns);
if (!ns_common)
return open_namespace(ns_common);
struct ns_common *ns;
static inline struct cgroup_namespace *to_cg_ns(struct ns_common *ns)
struct ns_common ns;
static inline struct ipc_namespace *to_ipc_ns(struct ns_common *ns)
struct ns_common ns;
struct ns_common;
extern struct ns_common *from_mnt_ns(struct mnt_namespace *);
static __always_inline __must_check bool __ns_ref_dec_and_lock(struct ns_common *ns,
bool is_current_namespace(struct ns_common *ns);
int __ns_common_init(struct ns_common *ns, u32 ns_type, const struct proc_ns_operations *ops, int inum);
void __ns_common_free(struct ns_common *ns);
void __ns_ref_active_put(struct ns_common *ns);
static __always_inline struct ns_common *__must_check ns_get_unless_inactive(struct ns_common *ns)
struct ns_common *__must_check ns_owner(struct ns_common *ns);
void __ns_ref_active_get(struct ns_common *ns);
static __always_inline bool is_ns_init_inum(const struct ns_common *ns)
static __always_inline bool is_ns_init_id(const struct ns_common *ns)
static __always_inline __must_check int __ns_ref_active_read(const struct ns_common *ns)
static __always_inline __must_check int __ns_ref_read(const struct ns_common *ns)
static __always_inline __must_check bool __ns_ref_put(struct ns_common *ns)
static __always_inline __must_check bool __ns_ref_get(struct ns_common *ns)
static __always_inline void __ns_ref_inc(struct ns_common *ns)
typedef struct ns_common *ns_get_path_helper_t(void *);
bool ns_match(const struct ns_common *ns, dev_t dev, ino_t ino);
struct ns_common;
u64 __ns_tree_gen_id(struct ns_common *ns, u64 id);
void __ns_tree_add_raw(struct ns_common *ns, struct ns_tree_root *ns_tree);
void __ns_tree_remove(struct ns_common *ns, struct ns_tree_root *ns_tree);
struct ns_common *ns_tree_lookup_rcu(u64 ns_id, int ns_type);
struct ns_common *__ns_tree_adjoined_rcu(struct ns_common *ns,
static inline void __ns_tree_add(struct ns_common *ns, struct ns_tree_root *ns_tree, u64 id)
struct ns_common ns;
static inline struct pid_namespace *to_pid_ns(struct ns_common *ns)
struct ns_common;
int open_related_ns(struct ns_common *ns,
struct ns_common *(*get_ns)(struct ns_common *ns));
struct ns_common *(*get)(struct task_struct *task);
void (*put)(struct ns_common *ns);
int (*install)(struct nsset *nsset, struct ns_common *ns);
struct user_namespace *(*owner)(struct ns_common *ns);
struct ns_common *(*get_parent)(struct ns_common *ns);
#define get_proc_ns(inode) ((struct ns_common *)(inode)->i_private)
struct ns_common ns;
static inline struct time_namespace *to_time_ns(struct ns_common *ns)
static inline struct user_namespace *to_user_ns(struct ns_common *ns)
struct ns_common *ns_get_owner(struct ns_common *ns);
static inline struct ns_common *ns_get_owner(struct ns_common *ns)
struct ns_common ns;
struct ns_common ns;
static inline struct uts_namespace *to_uts_ns(struct ns_common *ns)
struct ns_common *get_net_ns(struct ns_common *ns);
static inline struct ns_common *get_net_ns(struct ns_common *ns)
static inline struct net *to_net_ns(struct ns_common *ns)
struct ns_common ns;
static struct ns_common *ipcns_get(struct task_struct *task)
static void ipcns_put(struct ns_common *ns)
static int ipcns_install(struct nsset *nsset, struct ns_common *new)
static struct user_namespace *ipcns_owner(struct ns_common *ns)
static struct ns_common *bpf_prog_offload_info_fill_ns(void *private_data)
struct ns_common *ns;
static struct ns_common *bpf_map_offload_info_fill_ns(void *private_data)
struct ns_common *ns;
static struct ns_common *cgroupns_get(struct task_struct *task)
static void cgroupns_put(struct ns_common *ns)
static struct user_namespace *cgroupns_owner(struct ns_common *ns)
static int cgroupns_install(struct nsset *nsset, struct ns_common *ns)
static void ns_debug(struct ns_common *ns, const struct proc_ns_operations *ops)
void __ns_ref_active_put(struct ns_common *ns)
void __ns_ref_active_get(struct ns_common *ns)
int __ns_common_init(struct ns_common *ns, u32 ns_type, const struct proc_ns_operations *ops, int inum)
void __ns_common_free(struct ns_common *ns)
struct ns_common *__must_check ns_owner(struct ns_common *ns)
static inline int validate_ns(struct nsset *nsset, struct ns_common *ns)
struct ns_common *ns = NULL;
static inline struct ns_common *node_to_ns(const struct rb_node *node)
return rb_entry(node, struct ns_common, ns_tree_node.ns_node);
static inline struct ns_common *node_to_ns_unified(const struct rb_node *node)
return rb_entry(node, struct ns_common, ns_unified_node.ns_node);
static inline struct ns_common *node_to_ns_owner(const struct rb_node *node)
return rb_entry(node, struct ns_common, ns_owner_node.ns_node);
void __ns_tree_add_raw(struct ns_common *ns, struct ns_tree_root *ns_tree)
struct ns_common *owner = &user_ns->ns;
void __ns_tree_remove(struct ns_common *ns, struct ns_tree_root *ns_tree)
struct ns_common *owner = &user_ns->ns;
const struct ns_common *ns = node_to_ns(node);
const struct ns_common *ns = node_to_ns_unified(node);
static struct ns_common *__ns_unified_tree_lookup_rcu(u64 ns_id)
static struct ns_common *__ns_tree_lookup_rcu(u64 ns_id, int ns_type)
struct ns_common *ns_tree_lookup_rcu(u64 ns_id, int ns_type)
struct ns_common *__ns_tree_adjoined_rcu(struct ns_common *ns,
return list_entry_rcu(list, struct ns_common, ns_tree_node.ns_list_entry);
u64 __ns_tree_gen_id(struct ns_common *ns, u64 id)
struct ns_common *first_ns;
static struct ns_common *lookup_ns_owner_at(u64 ns_id, struct ns_common *owner)
struct ns_common *ret = NULL;
struct ns_common *ns;
static struct ns_common *lookup_ns_id(u64 mnt_ns_id, int ns_type)
struct ns_common *ns;
const struct ns_common *ns)
struct ns_common *ns)
static inline void ns_put(struct ns_common *ns)
DEFINE_FREE(ns_put, struct ns_common *, if (!IS_ERR_OR_NULL(_T)) ns_put(_T))
static inline struct ns_common *__must_check legitimize_ns(const struct klistns *kls,
struct ns_common *candidate)
struct ns_common *ns __free(ns_put) = NULL;
struct ns_common *ns = NULL, *first_ns = NULL, *prev = NULL;
struct ns_common *valid;
static struct ns_common *lookup_ns_id_at(u64 ns_id, int ns_type)
struct ns_common *ret = NULL;
struct ns_common *ns;
static inline struct ns_common *first_ns_common(const struct list_head *head,
return list_entry_rcu(head->next, struct ns_common, ns_tree_node.ns_list_entry);
return list_entry_rcu(head->next, struct ns_common, ns_unified_node.ns_list_entry);
static inline struct ns_common *next_ns_common(struct ns_common *ns,
return list_entry_rcu(ns->ns_tree_node.ns_list_entry.next, struct ns_common, ns_tree_node.ns_list_entry);
return list_entry_rcu(ns->ns_unified_node.ns_list_entry.next, struct ns_common, ns_unified_node.ns_list_entry);
static inline bool ns_common_is_head(struct ns_common *ns,
struct ns_common *ns, *first_ns = NULL, *prev = NULL;
struct ns_common *valid;
static struct ns_common *pidns_get(struct task_struct *task)
static struct ns_common *pidns_for_children_get(struct task_struct *task)
static void pidns_put(struct ns_common *ns)
static int pidns_install(struct nsset *nsset, struct ns_common *ns)
static struct ns_common *pidns_get_parent(struct ns_common *ns)
static struct user_namespace *pidns_owner(struct ns_common *ns)
static struct ns_common *timens_get(struct task_struct *task)
static struct ns_common *timens_for_children_get(struct task_struct *task)
static void timens_put(struct ns_common *ns)
static int timens_install(struct nsset *nsset, struct ns_common *new)
struct ns_common *nsc = &nsproxy->time_ns_for_children->ns;
static struct user_namespace *timens_owner(struct ns_common *ns)
struct ns_common *ns;
struct ns_common *ns;
static struct ns_common *userns_get(struct task_struct *task)
static void userns_put(struct ns_common *ns)
static int userns_install(struct nsset *nsset, struct ns_common *ns)
struct ns_common *ns_get_owner(struct ns_common *ns)
static struct user_namespace *userns_owner(struct ns_common *ns)
static struct ns_common *utsns_get(struct task_struct *task)
static void utsns_put(struct ns_common *ns)
static int utsns_install(struct nsset *nsset, struct ns_common *new)
static struct user_namespace *utsns_owner(struct ns_common *ns)
static struct ns_common *netns_get(struct task_struct *task)
static void netns_put(struct ns_common *ns)
static int netns_install(struct nsset *nsset, struct ns_common *ns)
static struct user_namespace *netns_owner(struct ns_common *ns)
struct ns_common *get_net_ns(struct ns_common *ns)
struct ns_common *ns = get_proc_ns(file_inode(fd_file(f)));