Re: Need lockdep help

From: Alan Stern
Date: Tue Dec 04 2007 - 14:28:44 EST


On Tue, 4 Dec 2007, Jarek Poplawski wrote:

> Alan Stern wrote, On 12/04/2007 04:17 PM:
> ...
>
> > Furthermore, in this case deadlock isn't really impossible -- it could
> > occur if there were a bug somewhere else in the kernel. So lockdep was
> > correct to warn that deadlock might occur.
>
>
> Alan, if the scenario was like you described at the beginning, there was
> no deadlock possible, unless some errors in the notifier.

Or errors in the notifier's caller.

> These #1-#3
> threads were only helpful to guess what lockdep could 'think', but I
> guess notifier doesn't use 2 rivaling threads for a wake, so, lockdep
> probably needed additional information. And you really can't consider
> any hypothetical kernel bugs here because then each lock is vulnerable.

But you have to consider hypothetical kernel bugs. That's exactly what
lockdep is for -- to warn you about possible deadlocks that could be
caused by bugs.

As a simple example, if thread #1 does "lock(A); lock(B)" and thread
#2 does "lock(B); lock(A)" then there's a possible bug. Lockdep should
warn about you, and it does -- even if those two threads can never run
at the same time.

If lockdep warned about deadlocks only when they actually happened, it
wouldn't be nearly so useful.

Alan Stern

--
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/