The strange sysv semaphore wakeup scheme has a kind of busy-wait lockSigned-off-by: Manfred Spraul <manfred@xxxxxxxxxxxxxxxx>
involved, which could deadlock if preemption is enabled during the
"lock".
It is an implementation detail (due to a spinlock being held) that this
is actually the case. However if "spinlocks" are made preemptible, or if
the sem lock is changed to a sleeping lock for example, then the wakeup
would become buggy. So this might be a bugfix for -rt kernels.
Imagine waker being preempted by wakee and never clearing IN_WAKEUP --
if wakee has higher RT priority then there is a priority inversion deadlock.
Even if there is not a priority inversion to cause a deadlock, then there
is still time wasted spinning.
Signed-off-by: Nick Piggin<npiggin@xxxxxxx>