diff options
author | Peter Zijlstra <peterz@infradead.org> | 2018-06-12 10:34:51 +0200 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2018-06-20 11:35:56 +0200 |
commit | 0abf17bc7790dd0467ed0e38522242f23c5da1c4 (patch) | |
tree | ef6c4c8f6feb00066e79e4144cab2f4e7ca30b79 /kernel/rcu | |
parent | 6519750210d9d3330e85d12e0128652edde448d2 (diff) | |
download | linux-0abf17bc7790dd0467ed0e38522242f23c5da1c4.tar.gz linux-0abf17bc7790dd0467ed0e38522242f23c5da1c4.tar.bz2 linux-0abf17bc7790dd0467ed0e38522242f23c5da1c4.zip |
sched/swait: Switch to full exclusive mode
Linus noted that swait basically implements exclusive mode -- because
swake_up() only wakes a single waiter. And because of that it should
take care to properly deal with the interruptible case.
In short, the problem is that swake_up() can race with a signal. In
this this case it is possible the swake_up() 'wakes' the waiter that
is already on the way out because it just got a signal and the wakeup
gets lost.
The normal wait code is very careful and avoids this situation, make
sure we do too.
Copy the exact exclusive semantics from wait.
Suggested-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Acked-by: Linus Torvalds <torvalds@linux-foundation.org>
Cc: bigeasy@linutronix.de
Cc: oleg@redhat.com
Cc: paulmck@linux.vnet.ibm.com
Cc: pbonzini@redhat.com
Link: https://lkml.kernel.org/r/20180612083909.209762413@infradead.org
Diffstat (limited to 'kernel/rcu')
0 files changed, 0 insertions, 0 deletions