From a206341dc4170698c9871e0f6dfea39c6c3a0391 Mon Sep 17 00:00:00 2001 From: Jarek Poplawski Date: Wed, 6 Dec 2006 20:36:23 -0800 Subject: [PATCH] --- yaml --- r: 42794 b: refs/heads/master c: b23984d0a12a4821b2e9712c71550f321eb88bb5 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/kernel/lockdep.c | 9 ++++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index 5815d2c6c3e4..11af3c775eb0 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 910b1b2e6d7d10e1c3bffdd12a90ec82f535f9a5 +refs/heads/master: b23984d0a12a4821b2e9712c71550f321eb88bb5 diff --git a/trunk/kernel/lockdep.c b/trunk/kernel/lockdep.c index f76a24f2ac20..300d61bb314b 100644 --- a/trunk/kernel/lockdep.c +++ b/trunk/kernel/lockdep.c @@ -359,7 +359,7 @@ get_usage_chars(struct lock_class *class, char *c1, char *c2, char *c3, char *c4 static void print_lock_name(struct lock_class *class) { - char str[128], c1, c2, c3, c4; + char str[KSYM_NAME_LEN + 1], c1, c2, c3, c4; const char *name; get_usage_chars(class, &c1, &c2, &c3, &c4); @@ -381,7 +381,7 @@ static void print_lock_name(struct lock_class *class) static void print_lockdep_cache(struct lockdep_map *lock) { const char *name; - char str[128]; + char str[KSYM_NAME_LEN + 1]; name = lock->name; if (!name) @@ -451,7 +451,9 @@ static void print_lock_dependencies(struct lock_class *class, int depth) print_lock_class_header(class, depth); list_for_each_entry(entry, &class->locks_after, entry) { - DEBUG_LOCKS_WARN_ON(!entry->class); + if (DEBUG_LOCKS_WARN_ON(!entry->class)) + return; + print_lock_dependencies(entry->class, depth + 1); printk("%*s ... acquired at:\n",depth,""); @@ -1733,6 +1735,7 @@ static int mark_lock(struct task_struct *curr, struct held_lock *this, debug_atomic_dec(&nr_unused_locks); break; default: + __raw_spin_unlock(&hash_lock); debug_locks_off(); WARN_ON(1); return 0;