mnt_namespace
struct mnt_namespace *mnt_ns;
static inline void get_mnt_ns(struct mnt_namespace *ns)
struct mnt_namespace *ns;
static inline bool is_anon_ns(struct mnt_namespace *ns)
struct mnt_namespace *ns = READ_ONCE(m->mnt_ns);
static inline bool mnt_ns_empty(const struct mnt_namespace *ns)
struct mnt_namespace *ns = mnt->mnt_ns;
struct mnt_namespace *get_sequential_mnt_ns(struct mnt_namespace *mnt_ns,
static inline struct mnt_namespace *to_mnt_ns(struct ns_common *ns)
return container_of(ns, struct mnt_namespace, ns);
struct mnt_namespace *mnt_ns_from_dentry(struct dentry *dentry);
struct mnt_namespace *mnt_ns; /* containing namespace */
struct mnt_namespace *prev_ns; /* previous namespace (NULL if none) */
static void mnt_add_to_ns(struct mnt_namespace *ns, struct mount *mnt)
struct mnt_namespace *n = mnt->mnt_parent->mnt_ns;
static void mnt_ns_release(struct mnt_namespace *ns)
DEFINE_FREE(mnt_ns_release, struct mnt_namespace *,
mnt_ns_release(container_of(rcu, struct mnt_namespace, ns.ns_rcu));
static void mnt_ns_tree_remove(struct mnt_namespace *ns)
static struct mount *mnt_find_id_at(struct mnt_namespace *ns, u64 mnt_id)
static struct mount *mnt_find_id_at_reverse(struct mnt_namespace *ns, u64 mnt_id)
static void free_mnt_ns(struct mnt_namespace *);
struct mnt_namespace *ns = emptied_ns;
static struct mnt_namespace *lookup_mnt_ns(u64 mnt_ns_id)
struct mnt_namespace *mnt_ns;
struct mnt_namespace *ns;
mnt_ns = container_of(ns, struct mnt_namespace, ns);
struct ns_common *from_mnt_ns(struct mnt_namespace *mnt)
struct mnt_namespace *get_sequential_mnt_ns(struct mnt_namespace *mntns, bool previous)
struct mnt_namespace *mnt_ns_from_dentry(struct dentry *dentry)
struct mnt_namespace *mnt_ns = mnt_ns_from_dentry(dentry);
static struct mnt_namespace *alloc_mnt_ns(struct user_namespace *, bool);
int count_mounts(struct mnt_namespace *ns, struct mount *mnt)
struct mnt_namespace *ns = dest_mnt->mnt_ns;
struct mnt_namespace *ns = m->mnt_ns;
static struct mnt_namespace *get_detached_copy(const struct path *path, unsigned int flags)
struct mnt_namespace *ns, *mnt_ns = current->nsproxy->mnt_ns, *src_mnt_ns;
struct mnt_namespace *ns = get_detached_copy(path, flags);
static struct mnt_namespace *create_new_namespace(struct path *path, unsigned int flags)
struct mnt_namespace *ns = current->nsproxy->mnt_ns;
struct mnt_namespace *new_ns;
struct mnt_namespace *new_ns;
static void free_mnt_ns(struct mnt_namespace *ns)
static struct mnt_namespace *alloc_mnt_ns(struct user_namespace *user_ns, bool anon)
struct mnt_namespace *new_ns;
new_ns = kzalloc_obj(struct mnt_namespace, GFP_KERNEL_ACCOUNT);
struct mnt_namespace *copy_mnt_ns(u64 flags, struct mnt_namespace *ns,
struct mnt_namespace *new_ns;
struct mnt_namespace *ns;
struct mnt_namespace *ns;
static struct vfsmount *lookup_mnt_in_ns(u64 id, struct mnt_namespace *ns)
static void statmount_mnt_ns_id(struct kstatmount *s, struct mnt_namespace *ns)
static int grab_requested_root(struct mnt_namespace *ns, struct path *root)
struct file *mnt_file, struct mnt_namespace *ns)
static struct mnt_namespace *grab_requested_mnt_ns(const struct mnt_id_req *kreq)
struct mnt_namespace *mnt_ns;
struct mnt_namespace *ns __free(mnt_ns_release) = NULL;
struct mnt_namespace *ns;
struct mnt_namespace *ns = kls->ns;
struct mnt_namespace *ns;
struct mnt_namespace init_mnt_ns = {
void put_mnt_ns(struct mnt_namespace *ns)
static bool mnt_already_visible(struct mnt_namespace *ns,
struct mnt_namespace *ns = current->nsproxy->mnt_ns;
struct mnt_namespace *mnt_ns = to_mnt_ns(ns), *old_mnt_ns;
struct mnt_namespace *ns = current->nsproxy->mnt_ns;
static struct mnt_namespace *emptied_ns; /* protected by namespace_sem */
static void touch_mnt_namespace(struct mnt_namespace *ns)
static void __touch_mnt_namespace(struct mnt_namespace *ns)
struct mnt_namespace *mntns;
struct mnt_namespace *mnt_ns = fsnotify_conn_mntns(mark->connector);
void __fsnotify_mntns_delete(struct mnt_namespace *mntns)
void fsnotify_mnt(__u32 mask, struct mnt_namespace *ns, struct vfsmount *mnt)
static inline void fsnotify_clear_marks_by_mntns(struct mnt_namespace *mntns)
static inline struct mnt_namespace *fsnotify_conn_mntns(
return &((struct mnt_namespace *)obj)->n_fsnotify_marks;
static int copy_ns_info_to_user(const struct mnt_namespace *mnt_ns,
struct mnt_namespace *mnt_ns;
struct mnt_namespace *ns,
int count_mounts(struct mnt_namespace *ns, struct mount *mnt);
struct mnt_namespace *ns = NULL;
struct mnt_namespace *ns = p->ns;
struct mnt_namespace;
static inline void fsnotify_mntns_delete(struct mnt_namespace *mntns)
static inline void fsnotify_mnt_attach(struct mnt_namespace *ns, struct vfsmount *mnt)
static inline void fsnotify_mnt_detach(struct mnt_namespace *ns, struct vfsmount *mnt)
static inline void fsnotify_mnt_move(struct mnt_namespace *ns, struct vfsmount *mnt)
const struct mnt_namespace *ns;
extern void __fsnotify_mntns_delete(struct mnt_namespace *mntns);
extern void fsnotify_mnt(__u32 mask, struct mnt_namespace *ns, struct vfsmount *mnt);
static inline void __fsnotify_mntns_delete(struct mnt_namespace *mntns)
static inline void fsnotify_mnt(__u32 mask, struct mnt_namespace *ns, struct vfsmount *mnt)
extern struct mnt_namespace init_mnt_ns;
extern struct mnt_namespace *copy_mnt_ns(u64, struct mnt_namespace *,
extern void put_mnt_ns(struct mnt_namespace *ns);
DEFINE_FREE(put_mnt_ns, struct mnt_namespace *, if (!IS_ERR_OR_NULL(_T)) put_mnt_ns(_T))
extern struct ns_common *from_mnt_ns(struct mnt_namespace *);
struct mnt_namespace;
struct mnt_namespace *: &(__ns)->ns, \
const struct mnt_namespace *: &(__ns)->ns, \
struct mnt_namespace;
struct mnt_namespace *: MNT_NS_INIT_INO, \
struct mnt_namespace *: &init_mnt_ns, \
struct mnt_namespace *: MNT_NS_INIT_ID, \
struct mnt_namespace *: &mntns_operations, \
struct mnt_namespace *: CLONE_NEWNS, \
extern struct mnt_namespace init_mnt_ns;
struct mnt_namespace *: current->nsproxy->mnt_ns, \
struct mnt_namespace *mnt_ns;
struct mnt_namespace;
struct mnt_namespace *: &(mnt_ns_tree), \