Loading fs/namespace.c +2 −2 Original line number Diff line number Diff line Loading @@ -2645,7 +2645,7 @@ long do_mount(const char *dev_name, const char __user *dir_name, static void free_mnt_ns(struct mnt_namespace *ns) { proc_free_inum(ns->ns.inum); ns_free_inum(&ns->ns); put_user_ns(ns->user_ns); kfree(ns); } Loading @@ -2667,7 +2667,7 @@ static struct mnt_namespace *alloc_mnt_ns(struct user_namespace *user_ns) new_ns = kmalloc(sizeof(struct mnt_namespace), GFP_KERNEL); if (!new_ns) return ERR_PTR(-ENOMEM); ret = proc_alloc_inum(&new_ns->ns.inum); ret = ns_alloc_inum(&new_ns->ns); if (ret) { kfree(new_ns); return ERR_PTR(ret); Loading include/linux/proc_ns.h +3 −0 Original line number Diff line number Diff line Loading @@ -71,4 +71,7 @@ static inline bool proc_ns_inode(struct inode *inode) { return false; } #endif /* CONFIG_PROC_FS */ #define ns_alloc_inum(ns) proc_alloc_inum(&(ns)->inum) #define ns_free_inum(ns) proc_free_inum((ns)->inum) #endif /* _LINUX_PROC_NS_H */ ipc/namespace.c +3 −3 Original line number Diff line number Diff line Loading @@ -26,7 +26,7 @@ static struct ipc_namespace *create_ipc_ns(struct user_namespace *user_ns, if (ns == NULL) return ERR_PTR(-ENOMEM); err = proc_alloc_inum(&ns->ns.inum); err = ns_alloc_inum(&ns->ns); if (err) { kfree(ns); return ERR_PTR(err); Loading @@ -35,7 +35,7 @@ static struct ipc_namespace *create_ipc_ns(struct user_namespace *user_ns, atomic_set(&ns->count, 1); err = mq_init_ns(ns); if (err) { proc_free_inum(ns->ns.inum); ns_free_inum(&ns->ns); kfree(ns); return ERR_PTR(err); } Loading Loading @@ -119,7 +119,7 @@ static void free_ipc_ns(struct ipc_namespace *ns) */ ipcns_notify(IPCNS_REMOVED); put_user_ns(ns->user_ns); proc_free_inum(ns->ns.inum); ns_free_inum(&ns->ns); kfree(ns); } Loading kernel/pid_namespace.c +2 −2 Original line number Diff line number Diff line Loading @@ -105,7 +105,7 @@ static struct pid_namespace *create_pid_namespace(struct user_namespace *user_ns if (ns->pid_cachep == NULL) goto out_free_map; err = proc_alloc_inum(&ns->ns.inum); err = ns_alloc_inum(&ns->ns); if (err) goto out_free_map; Loading Loading @@ -142,7 +142,7 @@ static void destroy_pid_namespace(struct pid_namespace *ns) { int i; proc_free_inum(ns->ns.inum); ns_free_inum(&ns->ns); for (i = 0; i < PIDMAP_ENTRIES; i++) kfree(ns->pidmap[i].page); put_user_ns(ns->user_ns); Loading kernel/user_namespace.c +2 −2 Original line number Diff line number Diff line Loading @@ -86,7 +86,7 @@ int create_user_ns(struct cred *new) if (!ns) return -ENOMEM; ret = proc_alloc_inum(&ns->ns.inum); ret = ns_alloc_inum(&ns->ns); if (ret) { kmem_cache_free(user_ns_cachep, ns); return ret; Loading Loading @@ -136,7 +136,7 @@ void free_user_ns(struct user_namespace *ns) #ifdef CONFIG_PERSISTENT_KEYRINGS key_put(ns->persistent_keyring_register); #endif proc_free_inum(ns->ns.inum); ns_free_inum(&ns->ns); kmem_cache_free(user_ns_cachep, ns); ns = parent; } while (atomic_dec_and_test(&parent->count)); Loading Loading
fs/namespace.c +2 −2 Original line number Diff line number Diff line Loading @@ -2645,7 +2645,7 @@ long do_mount(const char *dev_name, const char __user *dir_name, static void free_mnt_ns(struct mnt_namespace *ns) { proc_free_inum(ns->ns.inum); ns_free_inum(&ns->ns); put_user_ns(ns->user_ns); kfree(ns); } Loading @@ -2667,7 +2667,7 @@ static struct mnt_namespace *alloc_mnt_ns(struct user_namespace *user_ns) new_ns = kmalloc(sizeof(struct mnt_namespace), GFP_KERNEL); if (!new_ns) return ERR_PTR(-ENOMEM); ret = proc_alloc_inum(&new_ns->ns.inum); ret = ns_alloc_inum(&new_ns->ns); if (ret) { kfree(new_ns); return ERR_PTR(ret); Loading
include/linux/proc_ns.h +3 −0 Original line number Diff line number Diff line Loading @@ -71,4 +71,7 @@ static inline bool proc_ns_inode(struct inode *inode) { return false; } #endif /* CONFIG_PROC_FS */ #define ns_alloc_inum(ns) proc_alloc_inum(&(ns)->inum) #define ns_free_inum(ns) proc_free_inum((ns)->inum) #endif /* _LINUX_PROC_NS_H */
ipc/namespace.c +3 −3 Original line number Diff line number Diff line Loading @@ -26,7 +26,7 @@ static struct ipc_namespace *create_ipc_ns(struct user_namespace *user_ns, if (ns == NULL) return ERR_PTR(-ENOMEM); err = proc_alloc_inum(&ns->ns.inum); err = ns_alloc_inum(&ns->ns); if (err) { kfree(ns); return ERR_PTR(err); Loading @@ -35,7 +35,7 @@ static struct ipc_namespace *create_ipc_ns(struct user_namespace *user_ns, atomic_set(&ns->count, 1); err = mq_init_ns(ns); if (err) { proc_free_inum(ns->ns.inum); ns_free_inum(&ns->ns); kfree(ns); return ERR_PTR(err); } Loading Loading @@ -119,7 +119,7 @@ static void free_ipc_ns(struct ipc_namespace *ns) */ ipcns_notify(IPCNS_REMOVED); put_user_ns(ns->user_ns); proc_free_inum(ns->ns.inum); ns_free_inum(&ns->ns); kfree(ns); } Loading
kernel/pid_namespace.c +2 −2 Original line number Diff line number Diff line Loading @@ -105,7 +105,7 @@ static struct pid_namespace *create_pid_namespace(struct user_namespace *user_ns if (ns->pid_cachep == NULL) goto out_free_map; err = proc_alloc_inum(&ns->ns.inum); err = ns_alloc_inum(&ns->ns); if (err) goto out_free_map; Loading Loading @@ -142,7 +142,7 @@ static void destroy_pid_namespace(struct pid_namespace *ns) { int i; proc_free_inum(ns->ns.inum); ns_free_inum(&ns->ns); for (i = 0; i < PIDMAP_ENTRIES; i++) kfree(ns->pidmap[i].page); put_user_ns(ns->user_ns); Loading
kernel/user_namespace.c +2 −2 Original line number Diff line number Diff line Loading @@ -86,7 +86,7 @@ int create_user_ns(struct cred *new) if (!ns) return -ENOMEM; ret = proc_alloc_inum(&ns->ns.inum); ret = ns_alloc_inum(&ns->ns); if (ret) { kmem_cache_free(user_ns_cachep, ns); return ret; Loading Loading @@ -136,7 +136,7 @@ void free_user_ns(struct user_namespace *ns) #ifdef CONFIG_PERSISTENT_KEYRINGS key_put(ns->persistent_keyring_register); #endif proc_free_inum(ns->ns.inum); ns_free_inum(&ns->ns); kmem_cache_free(user_ns_cachep, ns); ns = parent; } while (atomic_dec_and_test(&parent->count)); Loading