--- zzzz-none-000/linux-2.6.28.10/lib/spinlock_debug.c 2009-05-02 18:54:43.000000000 +0000 +++ puma5-6360-529/linux-2.6.28.10/lib/spinlock_debug.c 2010-03-10 15:29:18.000000000 +0000 @@ -58,6 +58,7 @@ if (lock->owner && lock->owner != SPINLOCK_OWNER_INIT) owner = lock->owner; + restore_printk(); printk(KERN_EMERG "BUG: spinlock %s on CPU#%d, %s/%d\n", msg, raw_smp_processor_id(), current->comm, task_pid_nr(current)); @@ -112,7 +113,12 @@ } /* lockup suspected: */ if (print_once) { + /*--- extern spinlock_t logbuf_lock; ---*/ print_once = 0; + /*--- if(lock == &logbuf_lock) { ---*/ + /*--- spin_unlock(lock); ---*/ + /*--- } ---*/ + restore_printk(); printk(KERN_EMERG "BUG: spinlock lockup on CPU#%d, " "%s/%d, %p\n", raw_smp_processor_id(), current->comm, @@ -159,6 +165,7 @@ if (!debug_locks_off()) return; + restore_printk(); printk(KERN_EMERG "BUG: rwlock %s on CPU#%d, %s/%d, %p\n", msg, raw_smp_processor_id(), current->comm, task_pid_nr(current), lock);