diff options
Diffstat (limited to 'arch/x86/mm/fault.c')
-rw-r--r-- | arch/x86/mm/fault.c | 15 |
1 files changed, 6 insertions, 9 deletions
diff --git a/arch/x86/mm/fault.c b/arch/x86/mm/fault.c index ac2ad781da00..8bc5956e1af4 100644 --- a/arch/x86/mm/fault.c +++ b/arch/x86/mm/fault.c | |||
@@ -671,7 +671,8 @@ void __kprobes do_page_fault(struct pt_regs *regs, unsigned long error_code) | |||
671 | goto bad_area_nosemaphore; | 671 | goto bad_area_nosemaphore; |
672 | 672 | ||
673 | again: | 673 | again: |
674 | /* When running in the kernel we expect faults to occur only to | 674 | /* |
675 | * When running in the kernel we expect faults to occur only to | ||
675 | * addresses in user space. All other faults represent errors in the | 676 | * addresses in user space. All other faults represent errors in the |
676 | * kernel and should generate an OOPS. Unfortunately, in the case of an | 677 | * kernel and should generate an OOPS. Unfortunately, in the case of an |
677 | * erroneous fault occurring in a code path which already holds mmap_sem | 678 | * erroneous fault occurring in a code path which already holds mmap_sem |
@@ -734,9 +735,6 @@ good_area: | |||
734 | goto bad_area; | 735 | goto bad_area; |
735 | } | 736 | } |
736 | 737 | ||
737 | #ifdef CONFIG_X86_32 | ||
738 | survive: | ||
739 | #endif | ||
740 | /* | 738 | /* |
741 | * If for any reason at all we couldn't handle the fault, | 739 | * If for any reason at all we couldn't handle the fault, |
742 | * make sure we exit gracefully rather than endlessly redo | 740 | * make sure we exit gracefully rather than endlessly redo |
@@ -871,12 +869,11 @@ out_of_memory: | |||
871 | up_read(&mm->mmap_sem); | 869 | up_read(&mm->mmap_sem); |
872 | if (is_global_init(tsk)) { | 870 | if (is_global_init(tsk)) { |
873 | yield(); | 871 | yield(); |
874 | #ifdef CONFIG_X86_32 | 872 | /* |
875 | down_read(&mm->mmap_sem); | 873 | * Re-lookup the vma - in theory the vma tree might |
876 | goto survive; | 874 | * have changed: |
877 | #else | 875 | */ |
878 | goto again; | 876 | goto again; |
879 | #endif | ||
880 | } | 877 | } |
881 | 878 | ||
882 | printk("VM: killing process %s\n", tsk->comm); | 879 | printk("VM: killing process %s\n", tsk->comm); |