mirror of https://gitee.com/openkylin/linux.git
[PATCH] alpha smp fix
As usual, the reason of this breakage is quite silly: in do_entIF, we are checking for PS == 0 to see whether it was a kernel BUG() or userspace trap. It works, unless BUG() happens in interrupt - PS is not 0 in kernel mode due to non-zero IPL, and the things get messed up horribly then. In this particular case it was BUG_ON(!irqs_disabled()) triggered in run_posix_cpu_timers(), so we ended up shooting "current" with the bursts of one SIGTRAP and three SIGILLs on every timer tick. ;-)
This commit is contained in:
parent
62351cc38d
commit
eaf05be039
|
@ -240,7 +240,7 @@ do_entIF(unsigned long type, struct pt_regs *regs)
|
|||
siginfo_t info;
|
||||
int signo, code;
|
||||
|
||||
if (regs->ps == 0) {
|
||||
if ((regs->ps & ~IPL_MAX) == 0) {
|
||||
if (type == 1) {
|
||||
const unsigned int *data
|
||||
= (const unsigned int *) regs->pc;
|
||||
|
|
Loading…
Reference in New Issue