diff options
Diffstat (limited to 'mm/hugetlb.c')
| -rw-r--r-- | mm/hugetlb.c | 5 | 
1 files changed, 3 insertions, 2 deletions
| diff --git a/mm/hugetlb.c b/mm/hugetlb.c index 924553aa8f78..dfc940d5221d 100644 --- a/mm/hugetlb.c +++ b/mm/hugetlb.c @@ -5440,8 +5440,9 @@ long follow_hugetlb_page(struct mm_struct *mm, struct vm_area_struct *vma,  			continue;  		} -		refs = min3(pages_per_huge_page(h) - pfn_offset, -			    (vma->vm_end - vaddr) >> PAGE_SHIFT, remainder); +		/* vaddr may not be aligned to PAGE_SIZE */ +		refs = min3(pages_per_huge_page(h) - pfn_offset, remainder, +		    (vma->vm_end - ALIGN_DOWN(vaddr, PAGE_SIZE)) >> PAGE_SHIFT);  		if (pages || vmas)  			record_subpages_vmas(mem_map_offset(page, pfn_offset), |