Lines Matching refs:ns
29 static struct ucounts *inc_ipc_namespaces(struct user_namespace *ns) in inc_ipc_namespaces() argument
31 return inc_ucount(ns, current_euid(), UCOUNT_IPC_NAMESPACES); in inc_ipc_namespaces()
42 struct ipc_namespace *ns; in create_ipc_ns() local
61 ns = kzalloc(sizeof(struct ipc_namespace), GFP_KERNEL_ACCOUNT); in create_ipc_ns()
62 if (ns == NULL) in create_ipc_ns()
65 err = ns_common_init(ns); in create_ipc_ns()
69 ns_tree_gen_id(ns); 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()
90 ns_tree_add_raw(ns); in create_ipc_ns()
92 return ns; in create_ipc_ns()
95 retire_ipc_sysctls(ns); in create_ipc_ns()
97 retire_mq_sysctls(ns); in create_ipc_ns()
99 mntput(ns->mq_mnt); in create_ipc_ns()
101 put_user_ns(ns->user_ns); in create_ipc_ns()
102 ns_common_free(ns); in create_ipc_ns()
104 kfree(ns); in create_ipc_ns()
112 struct user_namespace *user_ns, struct ipc_namespace *ns) in copy_ipcs() argument
115 return get_ipc_ns(ns); in copy_ipcs()
116 return create_ipc_ns(user_ns, ns); in copy_ipcs()
127 void free_ipcs(struct ipc_namespace *ns, struct ipc_ids *ids, in free_ipcs() argument
144 free(ns, perm); in free_ipcs()
150 static void free_ipc_ns(struct ipc_namespace *ns) in free_ipc_ns() argument
156 mntput(ns->mq_mnt); in free_ipc_ns()
157 sem_exit_ns(ns); in free_ipc_ns()
158 msg_exit_ns(ns); in free_ipc_ns()
159 shm_exit_ns(ns); in free_ipc_ns()
161 retire_mq_sysctls(ns); in free_ipc_ns()
162 retire_ipc_sysctls(ns); in free_ipc_ns()
164 dec_ipc_namespaces(ns->ucounts); in free_ipc_ns()
165 put_user_ns(ns->user_ns); in free_ipc_ns()
166 ns_common_free(ns); in free_ipc_ns()
167 kfree(ns); in free_ipc_ns()
202 void put_ipc_ns(struct ipc_namespace *ns) in put_ipc_ns() argument
204 if (ns_ref_put_and_lock(ns, &mq_lock)) { in put_ipc_ns()
205 mq_clear_sbinfo(ns); in put_ipc_ns()
208 ns_tree_remove(ns); in put_ipc_ns()
209 if (llist_add(&ns->mnt_llist, &free_ipc_list)) in put_ipc_ns()
216 struct ipc_namespace *ns = NULL; in ipcns_get() local
222 ns = get_ipc_ns(nsproxy->ipc_ns); in ipcns_get()
225 return ns ? &ns->ns : NULL; in ipcns_get()
228 static void ipcns_put(struct ns_common *ns) in ipcns_put() argument
230 return put_ipc_ns(to_ipc_ns(ns)); in ipcns_put()
236 struct ipc_namespace *ns = to_ipc_ns(new); in ipcns_install() local
237 if (!ns_capable(ns->user_ns, CAP_SYS_ADMIN) || in ipcns_install()
242 nsproxy->ipc_ns = get_ipc_ns(ns); in ipcns_install()
246 static struct user_namespace *ipcns_owner(struct ns_common *ns) in ipcns_owner() argument
248 return to_ipc_ns(ns)->user_ns; in ipcns_owner()