|
@@ -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);
|
|
|
|