Lines Matching full:ns
28 static struct ucounts *inc_ipc_namespaces(struct user_namespace *ns) in inc_ipc_namespaces() argument
30 return inc_ucount(ns, current_euid(), UCOUNT_IPC_NAMESPACES); in inc_ipc_namespaces()
41 struct ipc_namespace *ns; in create_ipc_ns() local
60 ns = kzalloc(sizeof(struct ipc_namespace), GFP_KERNEL_ACCOUNT); in create_ipc_ns()
61 if (ns == NULL) in create_ipc_ns()
64 err = ns_alloc_inum(&ns->ns); in create_ipc_ns()
67 ns->ns.ops = &ipcns_operations; in create_ipc_ns()
69 refcount_set(&ns->ns.count, 1); in create_ipc_ns()
70 ns->user_ns = get_user_ns(user_ns); in create_ipc_ns()
71 ns->ucounts = ucounts; in create_ipc_ns()
73 err = mq_init_ns(ns); in create_ipc_ns()
78 if (!setup_mq_sysctls(ns)) in create_ipc_ns()
81 if (!setup_ipc_sysctls(ns)) in create_ipc_ns()
84 err = msg_init_ns(ns); in create_ipc_ns()
88 sem_init_ns(ns); in create_ipc_ns()
89 shm_init_ns(ns); in create_ipc_ns()
91 return ns; in create_ipc_ns()
94 retire_ipc_sysctls(ns); in create_ipc_ns()
96 retire_mq_sysctls(ns); in create_ipc_ns()
99 put_user_ns(ns->user_ns); in create_ipc_ns()
100 ns_free_inum(&ns->ns); in create_ipc_ns()
102 kfree(ns); in create_ipc_ns()
110 struct user_namespace *user_ns, struct ipc_namespace *ns) in copy_ipcs() argument
113 return get_ipc_ns(ns); in copy_ipcs()
114 return create_ipc_ns(user_ns, ns); in copy_ipcs()
119 * @ns: the namespace to remove the ipcs from
125 void free_ipcs(struct ipc_namespace *ns, struct ipc_ids *ids, in free_ipcs() argument
142 free(ns, perm); in free_ipcs()
148 static void free_ipc_ns(struct ipc_namespace *ns) in free_ipc_ns() argument
154 mntput(ns->mq_mnt); in free_ipc_ns()
155 sem_exit_ns(ns); in free_ipc_ns()
156 msg_exit_ns(ns); in free_ipc_ns()
157 shm_exit_ns(ns); in free_ipc_ns()
159 retire_mq_sysctls(ns); in free_ipc_ns()
160 retire_ipc_sysctls(ns); in free_ipc_ns()
162 dec_ipc_namespaces(ns->ucounts); in free_ipc_ns()
163 put_user_ns(ns->user_ns); in free_ipc_ns()
164 ns_free_inum(&ns->ns); in free_ipc_ns()
165 kfree(ns); in free_ipc_ns()
186 * @ns: the namespace to put
200 void put_ipc_ns(struct ipc_namespace *ns) in put_ipc_ns() argument
202 if (refcount_dec_and_lock(&ns->ns.count, &mq_lock)) { in put_ipc_ns()
203 mq_clear_sbinfo(ns); in put_ipc_ns()
206 if (llist_add(&ns->mnt_llist, &free_ipc_list)) in put_ipc_ns()
211 static inline struct ipc_namespace *to_ipc_ns(struct ns_common *ns) in to_ipc_ns() argument
213 return container_of(ns, struct ipc_namespace, ns); in to_ipc_ns()
218 struct ipc_namespace *ns = NULL; in ipcns_get() local
224 ns = get_ipc_ns(nsproxy->ipc_ns); in ipcns_get()
227 return ns ? &ns->ns : NULL; in ipcns_get()
230 static void ipcns_put(struct ns_common *ns) in ipcns_put() argument
232 return put_ipc_ns(to_ipc_ns(ns)); in ipcns_put()
238 struct ipc_namespace *ns = to_ipc_ns(new); in ipcns_install() local
239 if (!ns_capable(ns->user_ns, CAP_SYS_ADMIN) || in ipcns_install()
244 nsproxy->ipc_ns = get_ipc_ns(ns); in ipcns_install()
248 static struct user_namespace *ipcns_owner(struct ns_common *ns) in ipcns_owner() argument
250 return to_ipc_ns(ns)->user_ns; in ipcns_owner()