diff options
Diffstat (limited to 'lib/dump_stack.c')
| -rw-r--r-- | lib/dump_stack.c | 7 | 
1 files changed, 6 insertions, 1 deletions
diff --git a/lib/dump_stack.c b/lib/dump_stack.c index 5cff72f18c4a..33ffbf308853 100644 --- a/lib/dump_stack.c +++ b/lib/dump_stack.c @@ -106,7 +106,12 @@ retry:  		was_locked = 1;  	} else {  		local_irq_restore(flags); -		cpu_relax(); +		/* +		 * Wait for the lock to release before jumping to +		 * atomic_cmpxchg() in order to mitigate the thundering herd +		 * problem. +		 */ +		do { cpu_relax(); } while (atomic_read(&dump_lock) != -1);  		goto retry;  	}  |