Commit be3e7844 authored by Peter Zijlstra's avatar Peter Zijlstra Committed by Ingo Molnar

locking/spinlock: Update spin_unlock_wait() users

With the modified semantics of spin_unlock_wait() a number of
explicit barriers can be removed. Also update the comment for the
do_exit() usecase, as that was somewhat stale/obscure.
Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: linux-kernel@vger.kernel.org
Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
parent 726328d9
...@@ -282,7 +282,6 @@ static void sem_wait_array(struct sem_array *sma) ...@@ -282,7 +282,6 @@ static void sem_wait_array(struct sem_array *sma)
sem = sma->sem_base + i; sem = sma->sem_base + i;
spin_unlock_wait(&sem->lock); spin_unlock_wait(&sem->lock);
} }
smp_acquire__after_ctrl_dep();
} }
/* /*
......
...@@ -700,10 +700,14 @@ void do_exit(long code) ...@@ -700,10 +700,14 @@ void do_exit(long code)
exit_signals(tsk); /* sets PF_EXITING */ exit_signals(tsk); /* sets PF_EXITING */
/* /*
* tsk->flags are checked in the futex code to protect against * Ensure that all new tsk->pi_lock acquisitions must observe
* an exiting task cleaning up the robust pi futexes. * PF_EXITING. Serializes against futex.c:attach_to_pi_owner().
*/ */
smp_mb(); smp_mb();
/*
* Ensure that we must observe the pi_state in exit_mm() ->
* mm_release() -> exit_pi_state_list().
*/
raw_spin_unlock_wait(&tsk->pi_lock); raw_spin_unlock_wait(&tsk->pi_lock);
if (unlikely(in_atomic())) { if (unlikely(in_atomic())) {
......
...@@ -108,7 +108,6 @@ void task_work_run(void) ...@@ -108,7 +108,6 @@ void task_work_run(void)
* fail, but it can play with *work and other entries. * fail, but it can play with *work and other entries.
*/ */
raw_spin_unlock_wait(&task->pi_lock); raw_spin_unlock_wait(&task->pi_lock);
smp_mb();
do { do {
next = work->next; next = work->next;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment