X-Git-Url: https://git.karo-electronics.de/?a=blobdiff_plain;f=arch%2Falpha%2Fmm%2Ffault.c;h=a0e18da594d94216e716d69f66b2cec0074aa43d;hb=fdb64f93b38a3470fa4db8cd5720b8c731922d1a;hp=8aa9db834c11551afc1462bf970d2dbc0ab8a157;hpb=9b3a89f8b052f2a6193a9691e053f986144a65a0;p=karo-tx-linux.git diff --git a/arch/alpha/mm/fault.c b/arch/alpha/mm/fault.c index 8aa9db834c11..a0e18da594d9 100644 --- a/arch/alpha/mm/fault.c +++ b/arch/alpha/mm/fault.c @@ -21,7 +21,6 @@ #include #include #include -#include #include #include @@ -149,21 +148,17 @@ do_page_fault(unsigned long address, unsigned long mmcsr, the fault. */ fault = handle_mm_fault(mm, vma, address, cause > 0); up_read(&mm->mmap_sem); - - switch (fault) { - case VM_FAULT_MINOR: - current->min_flt++; - break; - case VM_FAULT_MAJOR: - current->maj_flt++; - break; - case VM_FAULT_SIGBUS: - goto do_sigbus; - case VM_FAULT_OOM: - goto out_of_memory; - default: + if (unlikely(fault & VM_FAULT_ERROR)) { + if (fault & VM_FAULT_OOM) + goto out_of_memory; + else if (fault & VM_FAULT_SIGBUS) + goto do_sigbus; BUG(); } + if (fault & VM_FAULT_MAJOR) + current->maj_flt++; + else + current->min_flt++; return; /* Something tried to access memory that isn't in our memory map.