Commit 22cd25ed authored by Benjamin Herrenschmidt's avatar Benjamin Herrenschmidt Committed by Linus Torvalds

[PATCH] Add NOPFN_REFAULT result from vm_ops->nopfn()

Add a NOPFN_REFAULT return code for vm_ops->nopfn() equivalent to
NOPAGE_REFAULT for vmops->nopage() indicating that the handler requests a
re-execution of the faulting instruction
Signed-off-by: default avatarBenjamin Herrenschmidt <>
Cc: Arnd Bergmann <>
Cc: Hugh Dickins <>
Cc: Christoph Hellwig <>
Signed-off-by: default avatarAndrew Morton <>
Signed-off-by: default avatarLinus Torvalds <>
parent e0dc0d8f
......@@ -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().
......@@ -2355,10 +2355,12 @@ static noinline int do_no_pfn(struct mm_struct *mm, struct vm_area_struct *vma,
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))
else if (unlikely(pfn == NOPFN_REFAULT))
page_table = pte_offset_map_lock(mm, pmd, address, &ptl);
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment