diff --git a/lib/spinlock_debug.c b/lib/spinlock_debug.c index 9c4b025..21c8aaa 100644 --- a/lib/spinlock_debug.c +++ b/lib/spinlock_debug.c @@ -111,8 +111,7 @@ static void __spin_lock_debug(spinlock_t *lock) __delay(1); } /* lockup suspected: */ - if (print_once) { - print_once = 0; + if (print_once == 1) { printk(KERN_EMERG "BUG: spinlock lockup on CPU#%d, " "%s/%d, %p\n", raw_smp_processor_id(), current->comm, @@ -122,7 +121,14 @@ static void __spin_lock_debug(spinlock_t *lock) trigger_all_cpu_backtrace(); #endif } + if (print_once++ > 1000) + goto out; } + return; +out: + panic("spinlock lockup panic #%llu\n", i); + // or: + // BUG(); } void _raw_spin_lock(spinlock_t *lock)