diff options
Diffstat (limited to 'arch/sh/mm/fault.c')
-rw-r--r-- | arch/sh/mm/fault.c | 23 |
1 files changed, 11 insertions, 12 deletions
diff --git a/arch/sh/mm/fault.c b/arch/sh/mm/fault.c index 0b3eaf6fbb28..964c6767dc73 100644 --- a/arch/sh/mm/fault.c +++ b/arch/sh/mm/fault.c | |||
@@ -33,6 +33,7 @@ asmlinkage void __kprobes do_page_fault(struct pt_regs *regs, | |||
33 | struct mm_struct *mm; | 33 | struct mm_struct *mm; |
34 | struct vm_area_struct * vma; | 34 | struct vm_area_struct * vma; |
35 | int si_code; | 35 | int si_code; |
36 | int fault; | ||
36 | siginfo_t info; | 37 | siginfo_t info; |
37 | 38 | ||
38 | trace_hardirqs_on(); | 39 | trace_hardirqs_on(); |
@@ -124,20 +125,18 @@ good_area: | |||
124 | * the fault. | 125 | * the fault. |
125 | */ | 126 | */ |
126 | survive: | 127 | survive: |
127 | switch (handle_mm_fault(mm, vma, address, writeaccess)) { | 128 | fault = handle_mm_fault(mm, vma, address, writeaccess); |
128 | case VM_FAULT_MINOR: | 129 | if (unlikely(fault & VM_FAULT_ERROR)) { |
129 | tsk->min_flt++; | 130 | if (fault & VM_FAULT_OOM) |
130 | break; | ||
131 | case VM_FAULT_MAJOR: | ||
132 | tsk->maj_flt++; | ||
133 | break; | ||
134 | case VM_FAULT_SIGBUS: | ||
135 | goto do_sigbus; | ||
136 | case VM_FAULT_OOM: | ||
137 | goto out_of_memory; | 131 | goto out_of_memory; |
138 | default: | 132 | else if (fault & VM_FAULT_SIGBUS) |
139 | BUG(); | 133 | goto do_sigbus; |
134 | BUG(); | ||
140 | } | 135 | } |
136 | if (fault & VM_FAULT_MAJOR) | ||
137 | tsk->maj_flt++; | ||
138 | else | ||
139 | tsk->min_flt++; | ||
141 | 140 | ||
142 | up_read(&mm->mmap_sem); | 141 | up_read(&mm->mmap_sem); |
143 | return; | 142 | return; |