]> err.no Git - linux-2.6/blobdiff - mm/memory.c
ieee1394: eth1394: clean up fragment_overlap
[linux-2.6] / mm / memory.c
index 8b8f0d2b453d03a9749a48e515d8d972f354dfb8..e7066e71dfa3b36daeb4830e3032091e38f0bfc1 100644 (file)
@@ -2355,10 +2355,12 @@ static noinline int do_no_pfn(struct mm_struct *mm, struct vm_area_struct *vma,
        BUG_ON(is_cow_mapping(vma->vm_flags));
 
        pfn = vma->vm_ops->nopfn(vma, address & PAGE_MASK);
-       if (pfn == NOPFN_OOM)
+       if (unlikely(pfn == NOPFN_OOM))
                return VM_FAULT_OOM;
-       if (pfn == NOPFN_SIGBUS)
+       else if (unlikely(pfn == NOPFN_SIGBUS))
                return VM_FAULT_SIGBUS;
+       else if (unlikely(pfn == NOPFN_REFAULT))
+               return VM_FAULT_MINOR;
 
        page_table = pte_offset_map_lock(mm, pmd, address, &ptl);