Re: 2.6.35-rc3 deadlocks on semaphore operations
From: Manfred Spraul
Date: Wed Jun 23 2010 - 12:28:59 EST
This is a multi-part message in MIME format.Hi,
I think I found it:
Previously, queue.status was never IN_WAKEUP when the semaphore spinlock
was held.
The last patch changes that:
Now the change from IN_WAKEUP to the final result code happens after the
the semaphore spinlock is dropped.
Thus a task can observe IN_WAKEUP even when it acquired the semaphore
spinlock.
As a result, semop() sometimes returned 1 (IN_WAKEUP) for a successful
operation.
Attached is a patch that should fix the bug.
--
Manfred