diff options
author | Jan Beulich <jbeulich@novell.com> | 2008-01-30 07:31:23 -0500 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-01-30 07:31:23 -0500 |
commit | 22f5991c85dec1281cce5c8df9ee92b43b1738c8 (patch) | |
tree | 9a0814a5b3c37b3752ee7dfcc6f6b2b6793dfe91 /arch/x86/mm | |
parent | d88879b2d0225da3ba460bbdb8361bb049653671 (diff) |
x86-64: honor notify_die() returning NOTIFY_STOP
This requires making die() return a value, making its callers honor
this (and be prepared that it may return), and making oops_end() have
two additional parameters.
Signed-off-by: Jan Beulich <jbeulich@novell.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'arch/x86/mm')
-rw-r--r-- | arch/x86/mm/fault_64.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/arch/x86/mm/fault_64.c b/arch/x86/mm/fault_64.c index 162050d4e5a3..121c7bda6297 100644 --- a/arch/x86/mm/fault_64.c +++ b/arch/x86/mm/fault_64.c | |||
@@ -227,9 +227,9 @@ static noinline void pgtable_bad(unsigned long address, struct pt_regs *regs, | |||
227 | tsk->thread.cr2 = address; | 227 | tsk->thread.cr2 = address; |
228 | tsk->thread.trap_no = 14; | 228 | tsk->thread.trap_no = 14; |
229 | tsk->thread.error_code = error_code; | 229 | tsk->thread.error_code = error_code; |
230 | __die("Bad pagetable", regs, error_code); | 230 | if (__die("Bad pagetable", regs, error_code)) |
231 | oops_end(flags); | 231 | regs = NULL; |
232 | do_exit(SIGKILL); | 232 | oops_end(flags, regs, SIGKILL); |
233 | } | 233 | } |
234 | 234 | ||
235 | /* | 235 | /* |
@@ -541,11 +541,11 @@ no_context: | |||
541 | tsk->thread.cr2 = address; | 541 | tsk->thread.cr2 = address; |
542 | tsk->thread.trap_no = 14; | 542 | tsk->thread.trap_no = 14; |
543 | tsk->thread.error_code = error_code; | 543 | tsk->thread.error_code = error_code; |
544 | __die("Oops", regs, error_code); | 544 | if (__die("Oops", regs, error_code)) |
545 | regs = NULL; | ||
545 | /* Executive summary in case the body of the oops scrolled away */ | 546 | /* Executive summary in case the body of the oops scrolled away */ |
546 | printk(KERN_EMERG "CR2: %016lx\n", address); | 547 | printk(KERN_EMERG "CR2: %016lx\n", address); |
547 | oops_end(flags); | 548 | oops_end(flags, regs, SIGKILL); |
548 | do_exit(SIGKILL); | ||
549 | 549 | ||
550 | /* | 550 | /* |
551 | * We ran out of memory, or some other thing happened to us that made | 551 | * We ran out of memory, or some other thing happened to us that made |