• Steven Rostedt's avatar
    lockdep: Show subclass in pretty print of lockdep output · e5e78d08
    Steven Rostedt authored
    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: default avatarThomas Gleixner <tglx@linutronix.de>
    Tested-by: default avatarSimon Kirby <sim@hostway.ca>
    Signed-off-by: default avatarSteven Rostedt <rostedt@goodmis.org>
    e5e78d08
lockdep.c 97 KB