]> git.proxmox.com Git - mirror_ubuntu-zesty-kernel.git/blobdiff - kernel/exit.c
pi-futex: set PF_EXITING without taking ->pi_lock
[mirror_ubuntu-zesty-kernel.git] / kernel / exit.c
index 6ca1e4666e9f3ca0acc9907cfd7aeba64fb9826d..3b8dfffd9329105c36fc9b0d601fa963cac5747a 100644 (file)
@@ -931,13 +931,13 @@ fastcall NORET_TYPE void do_exit(long code)
                schedule();
        }
 
+       tsk->flags |= PF_EXITING;
        /*
         * tsk->flags are checked in the futex code to protect against
         * an exiting task cleaning up the robust pi futexes.
         */
-       spin_lock_irq(&tsk->pi_lock);
-       tsk->flags |= PF_EXITING;
-       spin_unlock_irq(&tsk->pi_lock);
+       smp_mb();
+       spin_unlock_wait(&tsk->pi_lock);
 
        if (unlikely(in_atomic()))
                printk(KERN_INFO "note: %s[%d] exited with preempt_count %d\n",