diff mbox

lockdep: Print more info when MAX_LOCK_DEPTH is exceeded.

Message ID 1360176762-4321-1-git-send-email-greearb@candelatech.com
State Not Applicable, archived
Delegated to: David Miller
Headers show

Commit Message

Ben Greear Feb. 6, 2013, 6:52 p.m. UTC
From: Ben Greear <greearb@candelatech.com>

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

Signed-off-by: Ben Greear <greearb@candelatech.com>
---
 kernel/lockdep.c |    6 +++++-
 1 files changed, 5 insertions(+), 1 deletions(-)

Comments

Ben Greear Feb. 6, 2013, 6:55 p.m. UTC | #1
On 02/06/2013 10:52 AM, greearb@candelatech.com wrote:
> From: Ben Greear <greearb@candelatech.com>
>
> This helps debug cases where a lock is acquired over and
> over without being released.
>

Bleh, this should have gone to linux-kernel....fingers too used to
typing netdev...

Ben
diff mbox

Patch

diff --git a/kernel/lockdep.c b/kernel/lockdep.c
index 7981e5b..7e76b69 100644
--- a/kernel/lockdep.c
+++ b/kernel/lockdep.c
@@ -3189,8 +3189,12 @@  static int __lock_acquire(struct lockdep_map *lock, unsigned int subclass,
 		return 0;
 #endif
 	if (unlikely(curr->lockdep_depth >= MAX_LOCK_DEPTH)) {
+		debug_show_all_locks();
+		lockdep_print_held_locks(current);
+
 		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");
 		dump_stack();
 		return 0;