diff options
| author | Takashi Iwai <tiwai@suse.de> | 2012-08-03 12:59:38 +0200 |
|---|---|---|
| committer | Takashi Iwai <tiwai@suse.de> | 2012-08-03 12:59:38 +0200 |
| commit | d30a0d839a5a282e43353fee53d5dc70db5eceda (patch) | |
| tree | 189a91615be3174a9ff8b20937359d11298433af /kernel/panic.c | |
| parent | fcfb7866af9a5d0280b7e51dd772990c636b7dec (diff) | |
| parent | 988aec3de5f0fa848f26fbf64f9e83364d6b3c25 (diff) | |
Merge branch 'topic/next' into for-next
Diffstat (limited to 'kernel/panic.c')
| -rw-r--r-- | kernel/panic.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/kernel/panic.c b/kernel/panic.c index d2a5f4ecc6dd..e1b2822fff97 100644 --- a/kernel/panic.c +++ b/kernel/panic.c @@ -75,6 +75,14 @@ void panic(const char *fmt, ...) int state = 0; /* + * Disable local interrupts. This will prevent panic_smp_self_stop + * from deadlocking the first cpu that invokes the panic, since + * there is nothing to prevent an interrupt handler (that runs + * after the panic_lock is acquired) from invoking panic again. + */ + local_irq_disable(); + + /* * It's possible to come here directly from a panic-assertion and * not have preempt disabled. Some functions called from here want * preempt to be disabled. No point enabling it later though... |
