]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - kernel/fork.c
ipc: sysvsem: force unshare(CLONE_SYSVSEM) when CLONE_NEWIPC
[linux-2.6-omap-h63xx.git] / kernel / fork.c
index 01666979beac6f1a7e492d96ecf940648d1b40cf..de5c16c6b6ecd10b6898f2fc47062c987d851d36 100644 (file)
@@ -1696,7 +1696,12 @@ asmlinkage long sys_unshare(unsigned long unshare_flags)
                                CLONE_NEWNET))
                goto bad_unshare_out;
 
-       if (unshare_flags & CLONE_SYSVSEM)
+       /*
+        * CLONE_NEWIPC must also detach from the undolist: after switching
+        * to a new ipc namespace, the semaphore arrays from the old
+        * namespace are unreachable.
+        */
+       if (unshare_flags & (CLONE_NEWIPC|CLONE_SYSVSEM))
                do_sysvsem = 1;
        if ((err = unshare_thread(unshare_flags)))
                goto bad_unshare_out;