Merge branch 'parisc-3.19-1' of git://git.kernel.org/pub/scm/linux/kernel/git/deller...
[cascardo/linux.git] / ipc / namespace.c
index 531029a..068caf1 100644 (file)
@@ -26,16 +26,17 @@ 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);
        }
+       ns->ns.ops = &ipcns_operations;
 
        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);
        }
@@ -45,14 +46,6 @@ static struct ipc_namespace *create_ipc_ns(struct user_namespace *user_ns,
        msg_init_ns(ns);
        shm_init_ns(ns);
 
-       /*
-        * msgmni has already been computed for the new ipc ns.
-        * Thus, do the ipcns creation notification before registering that
-        * new ipcns in the chain.
-        */
-       ipcns_notify(IPCNS_CREATED);
-       register_ipcns_notifier(ns);
-
        ns->user_ns = get_user_ns(user_ns);
 
        return ns;
@@ -99,27 +92,13 @@ void free_ipcs(struct ipc_namespace *ns, struct ipc_ids *ids,
 
 static void free_ipc_ns(struct ipc_namespace *ns)
 {
-       /*
-        * Unregistering the hotplug notifier at the beginning guarantees
-        * that the ipc namespace won't be freed while we are inside the
-        * callback routine. Since the blocking_notifier_chain_XXX routines
-        * hold a rw lock on the notifier list, unregister_ipcns_notifier()
-        * won't take the rw lock before blocking_notifier_call_chain() has
-        * released the rd lock.
-        */
-       unregister_ipcns_notifier(ns);
        sem_exit_ns(ns);
        msg_exit_ns(ns);
        shm_exit_ns(ns);
        atomic_dec(&nr_ipc_ns);
 
-       /*
-        * Do the ipcns removal notification after decrementing nr_ipc_ns in
-        * order to have a correct value when recomputing msgmni.
-        */
-       ipcns_notify(IPCNS_REMOVED);
        put_user_ns(ns->user_ns);
-       proc_free_inum(ns->ns.inum);
+       ns_free_inum(&ns->ns);
        kfree(ns);
 }