summaryrefslogtreecommitdiffstats
path: root/kernel/rcu
diff options
context:
space:
mode:
authorPeter Zijlstra <peterz@infradead.org>2018-06-12 10:34:51 +0200
committerThomas Gleixner <tglx@linutronix.de>2018-06-20 11:35:56 +0200
commit0abf17bc7790dd0467ed0e38522242f23c5da1c4 (patch)
treeef6c4c8f6feb00066e79e4144cab2f4e7ca30b79 /kernel/rcu
parent6519750210d9d3330e85d12e0128652edde448d2 (diff)
downloadlinux-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