diff options
Diffstat (limited to 'arch/x86/mm')
| -rw-r--r-- | arch/x86/mm/Makefile | 3 | ||||
| -rw-r--r-- | arch/x86/mm/fault.c | 13 |
2 files changed, 9 insertions, 7 deletions
diff --git a/arch/x86/mm/Makefile b/arch/x86/mm/Makefile index fea4565ff576..d8cc96a2738f 100644 --- a/arch/x86/mm/Makefile +++ b/arch/x86/mm/Makefile | |||
| @@ -8,9 +8,8 @@ obj-$(CONFIG_X86_PTDUMP) += dump_pagetables.o | |||
| 8 | 8 | ||
| 9 | obj-$(CONFIG_HIGHMEM) += highmem_32.o | 9 | obj-$(CONFIG_HIGHMEM) += highmem_32.o |
| 10 | 10 | ||
| 11 | obj-$(CONFIG_MMIOTRACE_HOOKS) += kmmio.o | ||
| 12 | obj-$(CONFIG_MMIOTRACE) += mmiotrace.o | 11 | obj-$(CONFIG_MMIOTRACE) += mmiotrace.o |
| 13 | mmiotrace-y := pf_in.o mmio-mod.o | 12 | mmiotrace-y := kmmio.o pf_in.o mmio-mod.o |
| 14 | obj-$(CONFIG_MMIOTRACE_TEST) += testmmiotrace.o | 13 | obj-$(CONFIG_MMIOTRACE_TEST) += testmmiotrace.o |
| 15 | 14 | ||
| 16 | obj-$(CONFIG_NUMA) += numa_$(BITS).o | 15 | obj-$(CONFIG_NUMA) += numa_$(BITS).o |
diff --git a/arch/x86/mm/fault.c b/arch/x86/mm/fault.c index 31e8730fa246..21e996a70d68 100644 --- a/arch/x86/mm/fault.c +++ b/arch/x86/mm/fault.c | |||
| @@ -53,7 +53,7 @@ | |||
| 53 | 53 | ||
| 54 | static inline int kmmio_fault(struct pt_regs *regs, unsigned long addr) | 54 | static inline int kmmio_fault(struct pt_regs *regs, unsigned long addr) |
| 55 | { | 55 | { |
| 56 | #ifdef CONFIG_MMIOTRACE_HOOKS | 56 | #ifdef CONFIG_MMIOTRACE |
| 57 | if (unlikely(is_kmmio_active())) | 57 | if (unlikely(is_kmmio_active())) |
| 58 | if (kmmio_handler(regs, addr) == 1) | 58 | if (kmmio_handler(regs, addr) == 1) |
| 59 | return -1; | 59 | return -1; |
| @@ -413,6 +413,7 @@ static noinline void pgtable_bad(unsigned long address, struct pt_regs *regs, | |||
| 413 | unsigned long error_code) | 413 | unsigned long error_code) |
| 414 | { | 414 | { |
| 415 | unsigned long flags = oops_begin(); | 415 | unsigned long flags = oops_begin(); |
| 416 | int sig = SIGKILL; | ||
| 416 | struct task_struct *tsk; | 417 | struct task_struct *tsk; |
| 417 | 418 | ||
| 418 | printk(KERN_ALERT "%s: Corrupted page table at address %lx\n", | 419 | printk(KERN_ALERT "%s: Corrupted page table at address %lx\n", |
| @@ -423,8 +424,8 @@ static noinline void pgtable_bad(unsigned long address, struct pt_regs *regs, | |||
| 423 | tsk->thread.trap_no = 14; | 424 | tsk->thread.trap_no = 14; |
| 424 | tsk->thread.error_code = error_code; | 425 | tsk->thread.error_code = error_code; |
| 425 | if (__die("Bad pagetable", regs, error_code)) | 426 | if (__die("Bad pagetable", regs, error_code)) |
| 426 | regs = NULL; | 427 | sig = 0; |
| 427 | oops_end(flags, regs, SIGKILL); | 428 | oops_end(flags, regs, sig); |
| 428 | } | 429 | } |
| 429 | #endif | 430 | #endif |
| 430 | 431 | ||
| @@ -590,6 +591,7 @@ void __kprobes do_page_fault(struct pt_regs *regs, unsigned long error_code) | |||
| 590 | int fault; | 591 | int fault; |
| 591 | #ifdef CONFIG_X86_64 | 592 | #ifdef CONFIG_X86_64 |
| 592 | unsigned long flags; | 593 | unsigned long flags; |
| 594 | int sig; | ||
| 593 | #endif | 595 | #endif |
| 594 | 596 | ||
| 595 | tsk = current; | 597 | tsk = current; |
| @@ -849,11 +851,12 @@ no_context: | |||
| 849 | bust_spinlocks(0); | 851 | bust_spinlocks(0); |
| 850 | do_exit(SIGKILL); | 852 | do_exit(SIGKILL); |
| 851 | #else | 853 | #else |
| 854 | sig = SIGKILL; | ||
| 852 | if (__die("Oops", regs, error_code)) | 855 | if (__die("Oops", regs, error_code)) |
| 853 | regs = NULL; | 856 | sig = 0; |
| 854 | /* Executive summary in case the body of the oops scrolled away */ | 857 | /* Executive summary in case the body of the oops scrolled away */ |
| 855 | printk(KERN_EMERG "CR2: %016lx\n", address); | 858 | printk(KERN_EMERG "CR2: %016lx\n", address); |
| 856 | oops_end(flags, regs, SIGKILL); | 859 | oops_end(flags, regs, sig); |
| 857 | #endif | 860 | #endif |
| 858 | 861 | ||
| 859 | /* | 862 | /* |
