|
@@ -378,15 +378,11 @@ void die(const char *str, struct pt_regs *regs, long err)
|
|
unsigned long flags = oops_begin();
|
|
unsigned long flags = oops_begin();
|
|
int sig = SIGSEGV;
|
|
int sig = SIGSEGV;
|
|
|
|
|
|
- if (die_nest_count < 3) {
|
|
|
|
|
|
+ if (!user_mode_vm(regs))
|
|
report_bug(regs->ip, regs);
|
|
report_bug(regs->ip, regs);
|
|
|
|
|
|
- if (__die(str, regs, err))
|
|
|
|
- sig = 0;
|
|
|
|
- } else {
|
|
|
|
- printk(KERN_EMERG "Recursive die() failure, output suppressed\n");
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
|
|
+ if (__die(str, regs, err))
|
|
|
|
+ sig = 0;
|
|
oops_end(flags, regs, sig);
|
|
oops_end(flags, regs, sig);
|
|
}
|
|
}
|
|
|
|
|