From 691c9f346400c0e94f7b18cea18ef4f11d90ac65 Mon Sep 17 00:00:00 2001 From: Benjamin Herrenschmidt Date: Mon, 12 Feb 2007 00:51:38 -0800 Subject: [PATCH] --- yaml --- r: 47883 b: refs/heads/master c: 22cd25ed31bbf849acaa06ab220dc4f526153f13 h: refs/heads/master i: 47881: 0294e13c3111f8bb2fda35034b840c4df611f0d1 47879: 51efb961f6c3848bf0cefa8cb993baa9feb86d53 v: v3 --- [refs] | 2 +- trunk/include/linux/mm.h | 1 + trunk/mm/memory.c | 6 ++++-- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index e47bcab40523..d9d660edc01b 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: e0dc0d8f4a327d033bfb63d43f113d5f31d11b3c +refs/heads/master: 22cd25ed31bbf849acaa06ab220dc4f526153f13 diff --git a/trunk/include/linux/mm.h b/trunk/include/linux/mm.h index 903f3b71f4a7..a0eec16eb0bd 100644 --- a/trunk/include/linux/mm.h +++ b/trunk/include/linux/mm.h @@ -637,6 +637,7 @@ static inline int page_mapped(struct page *page) */ #define NOPFN_SIGBUS ((unsigned long) -1) #define NOPFN_OOM ((unsigned long) -2) +#define NOPFN_REFAULT ((unsigned long) -3) /* * Different kinds of faults, as returned by handle_mm_fault(). diff --git a/trunk/mm/memory.c b/trunk/mm/memory.c index 8b8f0d2b453d..e7066e71dfa3 100644 --- a/trunk/mm/memory.c +++ b/trunk/mm/memory.c @@ -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);