projects
/
firefly-linux-kernel-4.4.55.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Documentation: bindings: add compatible entry for Rockchip USB2.0 PHY
[firefly-linux-kernel-4.4.55.git]
/
lib
/
dump_stack.c
diff --git
a/lib/dump_stack.c
b/lib/dump_stack.c
index 6745c6230db3403629048256968443f51b777655..c30d07e99dba4cc32be6aeb4d353d79058509b4b 100644
(file)
--- a/
lib/dump_stack.c
+++ b/
lib/dump_stack.c
@@
-25,6
+25,7
@@
static atomic_t dump_lock = ATOMIC_INIT(-1);
asmlinkage __visible void dump_stack(void)
{
asmlinkage __visible void dump_stack(void)
{
+ unsigned long flags;
int was_locked;
int old;
int cpu;
int was_locked;
int old;
int cpu;
@@
-33,9
+34,8
@@
asmlinkage __visible void dump_stack(void)
* Permit this cpu to perform nested stack dumps while serialising
* against other CPUs
*/
* Permit this cpu to perform nested stack dumps while serialising
* against other CPUs
*/
- preempt_disable();
-
retry:
retry:
+ local_irq_save(flags);
cpu = smp_processor_id();
old = atomic_cmpxchg(&dump_lock, -1, cpu);
if (old == -1) {
cpu = smp_processor_id();
old = atomic_cmpxchg(&dump_lock, -1, cpu);
if (old == -1) {
@@
-43,6
+43,7
@@
retry:
} else if (old == cpu) {
was_locked = 1;
} else {
} else if (old == cpu) {
was_locked = 1;
} else {
+ local_irq_restore(flags);
cpu_relax();
goto retry;
}
cpu_relax();
goto retry;
}
@@
-52,7
+53,7
@@
retry:
if (!was_locked)
atomic_set(&dump_lock, -1);
if (!was_locked)
atomic_set(&dump_lock, -1);
-
preempt_enable(
);
+
local_irq_restore(flags
);
}
#else
asmlinkage __visible void dump_stack(void)
}
#else
asmlinkage __visible void dump_stack(void)