Code Review
/
kvmfornfv.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
review
|
tree
raw
|
inline
| side by side
Generating a kvmfornfv rpm which includes the right kernel config
[kvmfornfv.git]
/
kernel
/
lib
/
dump_stack.c
diff --git
a/kernel/lib/dump_stack.c
b/kernel/lib/dump_stack.c
index
7ccbc6f
..
c30d07e
100644
(file)
--- a/
kernel/lib/dump_stack.c
+++ b/
kernel/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
*/
- migrate_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);
-
migrate_enable(
);
+
local_irq_restore(flags
);
}
#else
asmlinkage __visible void dump_stack(void)
}
#else
asmlinkage __visible void dump_stack(void)