avr32: nmi_enter() without nmi_exit()
While updating the rcu code, I noticed that do_nmi() for AVR32 is odd: There is an nmi_enter() call without an nmi_exit(). This can't be correct, it breaks rcu (at least the preempt version) and lockdep. [haavard.skinnemoen@atmel.com: fixed another case that returned directly] Signed-off-by: Haavard Skinnemoen <haavard.skinnemoen@atmel.com>
This commit is contained in:
committed by
Haavard Skinnemoen
parent
73d4393d1d
commit
3d431a7427
@ -116,15 +116,15 @@ asmlinkage void do_nmi(unsigned long ecr, struct pt_regs *regs)
|
|||||||
switch (ret) {
|
switch (ret) {
|
||||||
case NOTIFY_OK:
|
case NOTIFY_OK:
|
||||||
case NOTIFY_STOP:
|
case NOTIFY_STOP:
|
||||||
return;
|
break;
|
||||||
case NOTIFY_BAD:
|
case NOTIFY_BAD:
|
||||||
die("Fatal Non-Maskable Interrupt", regs, SIGINT);
|
die("Fatal Non-Maskable Interrupt", regs, SIGINT);
|
||||||
default:
|
default:
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
printk(KERN_ALERT "Got NMI, but nobody cared. Disabling...\n");
|
printk(KERN_ALERT "Got NMI, but nobody cared. Disabling...\n");
|
||||||
nmi_disable();
|
nmi_disable();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
nmi_exit();
|
||||||
}
|
}
|
||||||
|
|
||||||
asmlinkage void do_critical_exception(unsigned long ecr, struct pt_regs *regs)
|
asmlinkage void do_critical_exception(unsigned long ecr, struct pt_regs *regs)
|
||||||
|
Reference in New Issue
Block a user