diff options
author | Matthew Wilcox <matthew.r.wilcox@intel.com> | 2016-03-15 21:57:28 (GMT) |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2016-03-15 23:55:16 (GMT) |
commit | 88193f7ce6657ec4197b1f26b73b37197373b8e6 (patch) | |
tree | 246c8405fb0aea518b25646cfbb0a8e85064da04 | |
parent | fdf1cdb91b6ab7a8a91df68c384f36b8a0909cab (diff) | |
download | linux-88193f7ce6657ec4197b1f26b73b37197373b8e6.tar.xz |
mm: use linear_page_index() in do_fault()
do_fault() assumes that PAGE_SIZE is the same as PAGE_CACHE_SIZE. Use
linear_page_index() to calculate pgoff in the correct units.
Signed-off-by: Matthew Wilcox <matthew.r.wilcox@intel.com>
Acked-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r-- | mm/memory.c | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/mm/memory.c b/mm/memory.c index 8adb5b7..032f05c 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -3124,8 +3124,7 @@ static int do_fault(struct mm_struct *mm, struct vm_area_struct *vma, unsigned long address, pte_t *page_table, pmd_t *pmd, unsigned int flags, pte_t orig_pte) { - pgoff_t pgoff = (((address & PAGE_MASK) - - vma->vm_start) >> PAGE_SHIFT) + vma->vm_pgoff; + pgoff_t pgoff = linear_page_index(vma, address); pte_unmap(page_table); /* The VMA was not fully populated on mmap() or missing VM_DONTEXPAND */ |