[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: Benjamin Herrenschmidt <benh@kernel.crashing.org> Cc: Arnd Bergmann <arnd.bergmann@de.ibm.com> Cc: Hugh Dickins <hugh@veritas.com> Cc: Christoph Hellwig <hch@lst.de> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
Родитель
e0dc0d8f4a
Коммит
22cd25ed31
|
@ -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,
|
|||
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);
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче