From d9dbece9fc1245129f8a8a5783239dabb1211745 Mon Sep 17 00:00:00 2001 From: Akinobu Mita Date: Mon, 31 Oct 2011 17:12:29 -0700 Subject: [PATCH] --- yaml --- r: 272215 b: refs/heads/master c: 4e101b0e6aa885f5786a058eefc1ce4b7cc7c44e h: refs/heads/master i: 272213: 9d51675cad8be375001b8d3e16089fb027765432 272211: 946bd9cf5d259b044458bbe40aee0c645a0b7464 272207: 4836d58f5ac50575c1feb02658f1a3dc9ef8968a v: v3 --- [refs] | 2 +- trunk/lib/spinlock_debug.c | 19 ++++++++++--------- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/[refs] b/[refs] index f7d26c70e3fd..58ec294013f4 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 1dff46d6987484eaa31f2fb1425216ba06418be3 +refs/heads/master: 4e101b0e6aa885f5786a058eefc1ce4b7cc7c44e diff --git a/trunk/lib/spinlock_debug.c b/trunk/lib/spinlock_debug.c index 4755b98b6dfb..5f3eacdd6178 100644 --- a/trunk/lib/spinlock_debug.c +++ b/trunk/lib/spinlock_debug.c @@ -49,13 +49,10 @@ void __rwlock_init(rwlock_t *lock, const char *name, EXPORT_SYMBOL(__rwlock_init); -static void spin_bug(raw_spinlock_t *lock, const char *msg) +static void spin_dump(raw_spinlock_t *lock, const char *msg) { struct task_struct *owner = NULL; - if (!debug_locks_off()) - return; - if (lock->owner && lock->owner != SPINLOCK_OWNER_INIT) owner = lock->owner; printk(KERN_EMERG "BUG: spinlock %s on CPU#%d, %s/%d\n", @@ -70,6 +67,14 @@ static void spin_bug(raw_spinlock_t *lock, const char *msg) dump_stack(); } +static void spin_bug(raw_spinlock_t *lock, const char *msg) +{ + if (!debug_locks_off()) + return; + + spin_dump(lock, msg); +} + #define SPIN_BUG_ON(cond, lock, msg) if (unlikely(cond)) spin_bug(lock, msg) static inline void @@ -113,11 +118,7 @@ static void __spin_lock_debug(raw_spinlock_t *lock) /* lockup suspected: */ if (print_once) { print_once = 0; - printk(KERN_EMERG "BUG: spinlock lockup on CPU#%d, " - "%s/%d, %p\n", - raw_smp_processor_id(), current->comm, - task_pid_nr(current), lock); - dump_stack(); + spin_dump(lock, "lockup"); #ifdef CONFIG_SMP trigger_all_cpu_backtrace(); #endif