diff options
Diffstat (limited to 'arch/alpha/mm/fault.c')
-rw-r--r-- | arch/alpha/mm/fault.c | 22 |
1 files changed, 9 insertions, 13 deletions
diff --git a/arch/alpha/mm/fault.c b/arch/alpha/mm/fault.c index f5862792a167..a0e18da594d9 100644 --- a/arch/alpha/mm/fault.c +++ b/arch/alpha/mm/fault.c | |||
@@ -148,21 +148,17 @@ do_page_fault(unsigned long address, unsigned long mmcsr, | |||
148 | the fault. */ | 148 | the fault. */ |
149 | fault = handle_mm_fault(mm, vma, address, cause > 0); | 149 | fault = handle_mm_fault(mm, vma, address, cause > 0); |
150 | up_read(&mm->mmap_sem); | 150 | up_read(&mm->mmap_sem); |
151 | 151 | if (unlikely(fault & VM_FAULT_ERROR)) { | |
152 | switch (fault) { | 152 | if (fault & VM_FAULT_OOM) |
153 | case VM_FAULT_MINOR: | 153 | goto out_of_memory; |
154 | current->min_flt++; | 154 | else if (fault & VM_FAULT_SIGBUS) |
155 | break; | 155 | goto do_sigbus; |
156 | case VM_FAULT_MAJOR: | ||
157 | current->maj_flt++; | ||
158 | break; | ||
159 | case VM_FAULT_SIGBUS: | ||
160 | goto do_sigbus; | ||
161 | case VM_FAULT_OOM: | ||
162 | goto out_of_memory; | ||
163 | default: | ||
164 | BUG(); | 156 | BUG(); |
165 | } | 157 | } |
158 | if (fault & VM_FAULT_MAJOR) | ||
159 | current->maj_flt++; | ||
160 | else | ||
161 | current->min_flt++; | ||
166 | return; | 162 | return; |
167 | 163 | ||
168 | /* Something tried to access memory that isn't in our memory map. | 164 | /* Something tried to access memory that isn't in our memory map. |