Loading fs/namespace.c +13 −8 Original line number Diff line number Diff line Loading @@ -1582,6 +1582,11 @@ static bool is_mnt_ns_file(struct dentry *dentry) return true; } struct mnt_namespace *to_mnt_ns(struct ns_common *ns) { return container_of(ns, struct mnt_namespace, ns); } static bool mnt_ns_loop(struct dentry *dentry) { /* Could bind mounting the mount namespace inode cause a Loading @@ -1591,7 +1596,7 @@ static bool mnt_ns_loop(struct dentry *dentry) if (!is_mnt_ns_file(dentry)) return false; mnt_ns = get_proc_ns(dentry->d_inode)->ns; mnt_ns = to_mnt_ns(get_proc_ns(dentry->d_inode)->ns); return current->nsproxy->mnt_ns->seq >= mnt_ns->seq; } Loading Loading @@ -3146,14 +3151,14 @@ bool fs_fully_visible(struct file_system_type *type) static void *mntns_get(struct task_struct *task) { struct mnt_namespace *ns = NULL; struct ns_common *ns = NULL; struct nsproxy *nsproxy; task_lock(task); nsproxy = task->nsproxy; if (nsproxy) { ns = nsproxy->mnt_ns; get_mnt_ns(ns); ns = &nsproxy->mnt_ns->ns; get_mnt_ns(to_mnt_ns(ns)); } task_unlock(task); Loading @@ -3162,13 +3167,13 @@ static void *mntns_get(struct task_struct *task) static void mntns_put(void *ns) { put_mnt_ns(ns); put_mnt_ns(to_mnt_ns(ns)); } static int mntns_install(struct nsproxy *nsproxy, void *ns) { struct fs_struct *fs = current->fs; struct mnt_namespace *mnt_ns = ns; struct mnt_namespace *mnt_ns = to_mnt_ns(ns); struct path root; if (!ns_capable(mnt_ns->user_ns, CAP_SYS_ADMIN) || Loading Loading @@ -3200,8 +3205,8 @@ static int mntns_install(struct nsproxy *nsproxy, void *ns) static unsigned int mntns_inum(void *ns) { struct mnt_namespace *mnt_ns = ns; return mnt_ns->ns.inum; struct ns_common *p = ns; return p->inum; } const struct proc_ns_operations mntns_operations = { Loading Loading
fs/namespace.c +13 −8 Original line number Diff line number Diff line Loading @@ -1582,6 +1582,11 @@ static bool is_mnt_ns_file(struct dentry *dentry) return true; } struct mnt_namespace *to_mnt_ns(struct ns_common *ns) { return container_of(ns, struct mnt_namespace, ns); } static bool mnt_ns_loop(struct dentry *dentry) { /* Could bind mounting the mount namespace inode cause a Loading @@ -1591,7 +1596,7 @@ static bool mnt_ns_loop(struct dentry *dentry) if (!is_mnt_ns_file(dentry)) return false; mnt_ns = get_proc_ns(dentry->d_inode)->ns; mnt_ns = to_mnt_ns(get_proc_ns(dentry->d_inode)->ns); return current->nsproxy->mnt_ns->seq >= mnt_ns->seq; } Loading Loading @@ -3146,14 +3151,14 @@ bool fs_fully_visible(struct file_system_type *type) static void *mntns_get(struct task_struct *task) { struct mnt_namespace *ns = NULL; struct ns_common *ns = NULL; struct nsproxy *nsproxy; task_lock(task); nsproxy = task->nsproxy; if (nsproxy) { ns = nsproxy->mnt_ns; get_mnt_ns(ns); ns = &nsproxy->mnt_ns->ns; get_mnt_ns(to_mnt_ns(ns)); } task_unlock(task); Loading @@ -3162,13 +3167,13 @@ static void *mntns_get(struct task_struct *task) static void mntns_put(void *ns) { put_mnt_ns(ns); put_mnt_ns(to_mnt_ns(ns)); } static int mntns_install(struct nsproxy *nsproxy, void *ns) { struct fs_struct *fs = current->fs; struct mnt_namespace *mnt_ns = ns; struct mnt_namespace *mnt_ns = to_mnt_ns(ns); struct path root; if (!ns_capable(mnt_ns->user_ns, CAP_SYS_ADMIN) || Loading Loading @@ -3200,8 +3205,8 @@ static int mntns_install(struct nsproxy *nsproxy, void *ns) static unsigned int mntns_inum(void *ns) { struct mnt_namespace *mnt_ns = ns; return mnt_ns->ns.inum; struct ns_common *p = ns; return p->inum; } const struct proc_ns_operations mntns_operations = { Loading