diff options
| -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); |
