lockdep: Print more info when MAX_LOCK_DEPTH is exceeded

This helps debug cases where a lock is acquired over and
over without being released.

Suggested-by: Steven Rostedt <[email protected]>
Signed-off-by: Ben Greear <[email protected]>
Cc: [email protected]
Link: http://lkml.kernel.org/r/[email protected]
[ Changed the printout ordering. ]
Signed-off-by: Ingo Molnar <[email protected]>
This commit is contained in:
Ben Greear 2013-02-06 10:56:19 -08:00 • committed by Ingo Molnar
commit c054060683

View file

@ -3190,9 +3190,14 @@ static int __lock_acquire(struct lockdep_map *lock, unsigned int subclass,
#endif
if (unlikely(curr->lockdep_depth >= MAX_LOCK_DEPTH)) {
debug_locks_off();
printk("BUG: MAX_LOCK_DEPTH too low!\n");
printk("BUG: MAX_LOCK_DEPTH too low, depth: %i max: %lu!\n",
curr->lockdep_depth, MAX_LOCK_DEPTH);
printk("turning off the locking correctness validator.\n");
lockdep_print_held_locks(current);
debug_show_all_locks();
dump_stack();
return 0;
}