diff options
| -rw-r--r-- | arch/x86/kernel/dumpstack_32.c | 10 | ||||
| -rw-r--r-- | arch/x86/kernel/dumpstack_64.c | 6 |
2 files changed, 8 insertions, 8 deletions
diff --git a/arch/x86/kernel/dumpstack_32.c b/arch/x86/kernel/dumpstack_32.c index e91ae34f9684..f2046c5752d0 100644 --- a/arch/x86/kernel/dumpstack_32.c +++ b/arch/x86/kernel/dumpstack_32.c | |||
| @@ -378,15 +378,11 @@ void die(const char *str, struct pt_regs *regs, long err) | |||
| 378 | unsigned long flags = oops_begin(); | 378 | unsigned long flags = oops_begin(); |
| 379 | int sig = SIGSEGV; | 379 | int sig = SIGSEGV; |
| 380 | 380 | ||
| 381 | if (die_nest_count < 3) { | 381 | if (!user_mode_vm(regs)) |
| 382 | report_bug(regs->ip, regs); | 382 | report_bug(regs->ip, regs); |
| 383 | 383 | ||
| 384 | if (__die(str, regs, err)) | 384 | if (__die(str, regs, err)) |
| 385 | sig = 0; | 385 | sig = 0; |
| 386 | } else { | ||
| 387 | printk(KERN_EMERG "Recursive die() failure, output suppressed\n"); | ||
| 388 | } | ||
| 389 | |||
| 390 | oops_end(flags, regs, sig); | 386 | oops_end(flags, regs, sig); |
| 391 | } | 387 | } |
| 392 | 388 | ||
diff --git a/arch/x86/kernel/dumpstack_64.c b/arch/x86/kernel/dumpstack_64.c index 831e1e159cb4..28c67aae5562 100644 --- a/arch/x86/kernel/dumpstack_64.c +++ b/arch/x86/kernel/dumpstack_64.c | |||
| @@ -506,12 +506,16 @@ int __kprobes __die(const char *str, struct pt_regs *regs, long err) | |||
| 506 | return 0; | 506 | return 0; |
| 507 | } | 507 | } |
| 508 | 508 | ||
| 509 | /* | ||
| 510 | * This is gone through when something in the kernel has done something bad | ||
| 511 | * and is about to be terminated: | ||
| 512 | */ | ||
| 509 | void die(const char *str, struct pt_regs *regs, long err) | 513 | void die(const char *str, struct pt_regs *regs, long err) |
| 510 | { | 514 | { |
| 511 | unsigned long flags = oops_begin(); | 515 | unsigned long flags = oops_begin(); |
| 512 | int sig = SIGSEGV; | 516 | int sig = SIGSEGV; |
| 513 | 517 | ||
| 514 | if (!user_mode(regs)) | 518 | if (!user_mode_vm(regs)) |
| 515 | report_bug(regs->ip, regs); | 519 | report_bug(regs->ip, regs); |
| 516 | 520 | ||
| 517 | if (__die(str, regs, err)) | 521 | if (__die(str, regs, err)) |
