]> git.baikalelectronics.ru Git - kernel.git/commit
lockdep: Show subclass in pretty print of lockdep output
authorSteven Rostedt <srostedt@redhat.com>
Thu, 3 Nov 2011 00:24:16 +0000 (20:24 -0400)
committerSteven Rostedt <rostedt@goodmis.org>
Mon, 7 Nov 2011 16:01:46 +0000 (11:01 -0500)
commit207b7f9da2a629ec0beebc7001a13f41a1b36c18
tree524c4faf387d4ac1dc46b23015a9d8fc4823ab88
parent225ec917e5634fa794376f1283f3132fab19699d
lockdep: Show subclass in pretty print of lockdep output

The pretty print of the lockdep debug splat uses just the lock name
to show how the locking scenario happens. But when it comes to
nesting locks, the output becomes confusing which takes away the point
of the pretty printing of the lock scenario.

Without displaying the subclass info, we get the following output:

  Possible unsafe locking scenario:

        CPU0                    CPU1
        ----                    ----
   lock(slock-AF_INET);
                                lock(slock-AF_INET);
                                lock(slock-AF_INET);
   lock(slock-AF_INET);

  *** DEADLOCK ***

The above looks more of a A->A locking bug than a A->B B->A.
By adding the subclass to the output, we can see what really happened:

 other info that might help us debug this:

  Possible unsafe locking scenario:

        CPU0                    CPU1
        ----                    ----
   lock(slock-AF_INET);
                                lock(slock-AF_INET/1);
                                lock(slock-AF_INET);
   lock(slock-AF_INET/1);

  *** DEADLOCK ***

This bug was discovered while tracking down a real bug caught by lockdep.

Link: http://lkml.kernel.org/r/20111025202049.GB25043@hostway.ca
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Reported-by: Thomas Gleixner <tglx@linutronix.de>
Tested-by: Simon Kirby <sim@hostway.ca>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
kernel/lockdep.c