]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
futex: Move exit_pi_state() call to release_mm()
authorThomas Gleixner <tglx@linutronix.de>
Mon, 5 Oct 2009 16:18:03 +0000 (18:18 +0200)
committerGreg Kroah-Hartman <gregkh@suse.de>
Mon, 12 Oct 2009 19:40:11 +0000 (12:40 -0700)
commit 322a2c100a8998158445599ea437fb556aa95b11 upstream.

exit_pi_state() is called from do_exit() but not from do_execve().
Move it to release_mm() so it gets called from do_execve() as well.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
LKML-Reference: <new-submission>
Cc: Anirban Sinha <ani@anirban.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
kernel/exit.c
kernel/fork.c

index 869dc221733e27701c275a0bdf283404507108f6..b8606f0f22e43869eb62ec61ceeb89ab31f17b0f 100644 (file)
@@ -987,8 +987,6 @@ NORET_TYPE void do_exit(long code)
        tsk->mempolicy = NULL;
 #endif
 #ifdef CONFIG_FUTEX
-       if (unlikely(!list_empty(&tsk->pi_state_list)))
-               exit_pi_state_list(tsk);
        if (unlikely(current->pi_state_cache))
                kfree(current->pi_state_cache);
 #endif
index e6c04d462ab250b806cd2e7d76d84fd1729d121e..edd0b2dfbce8a1aa40eca8a4ce0a5b9e36b907d5 100644 (file)
@@ -550,6 +550,8 @@ void mm_release(struct task_struct *tsk, struct mm_struct *mm)
        if (unlikely(tsk->compat_robust_list))
                compat_exit_robust_list(tsk);
 #endif
+       if (unlikely(!list_empty(&tsk->pi_state_list)))
+               exit_pi_state_list(tsk);
 #endif
 
        /* Get rid of any cached register state */