kfree(ns);
return ERR_PTR(err);
}
- atomic_inc(&nr_ipc_ns);
sem_init_ns(ns);
msg_init_ns(ns);
sem_exit_ns(ns);
msg_exit_ns(ns);
shm_exit_ns(ns);
- atomic_dec(&nr_ipc_ns);
put_user_ns(ns->user_ns);
ns_free_inum(&ns->ns);
return 0;
}
+static struct user_namespace *ipcns_owner(struct ns_common *ns)
+{
+ return to_ipc_ns(ns)->user_ns;
+}
+
const struct proc_ns_operations ipcns_operations = {
.name = "ipc",
.type = CLONE_NEWIPC,
.get = ipcns_get,
.put = ipcns_put,
.install = ipcns_install,
+ .owner = ipcns_owner,
};