Re: 2.6.35-rc3 deadlocks on semaphore operations

From: Luca Tettamanti
Date: Wed Jun 23 2010 - 15:14:29 EST


On Wed, Jun 23, 2010 at 6:29 PM, Manfred Spraul
<manfred@xxxxxxxxxxxxxxxx> wrote:
> 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.

Apache seems fine.

Tested-by: Luca Tettamanti <kronos.it@xxxxxxxxx>

thanks,
Luca
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/