Re: [PATCH] workaround minor lockdep bug triggered by mm_take_all_locks

Roland Dreier
2008-08-05T12:02:25Z

> Let's focus on check_deadlock->print_deadlock_bug and somebody who's
> not beyond the point please explain what print_deadlock_bug reports
> that does not actually occur and why it's a good idea to change the
> common code to accommodate for its false positives instead of getting
> rid of it for good.

check_deadlock operates on classes of locks, so it can warn about
potential deadlocks, eg if we have

foo(obj1, obj2)
{
lock(obj1);
lock(obj2);
...

then foo(obj, obj); is a deadlock but lockdep can warn about foo(obj,
different_obj) without triggering the deadlock in reality. Of course
this leads to false positives, and we sometimes have to change correct
code to help lockdep, but usually such rewriting leads to simpler
clearer better locking anyway.

- R.