diff --git a/mm/hugetlb.c b/mm/hugetlb.c
index ab89d6f382d1274a8294f8fd385f82d864400674..bb7dc405634ff38bb25a4765618a9e295d3069d7 100644
--- a/mm/hugetlb.c
+++ b/mm/hugetlb.c
@@ -2315,8 +2315,7 @@ static int unmap_ref_private(struct mm_struct *mm, struct vm_area_struct *vma,
 	 * from page cache lookup which is in HPAGE_SIZE units.
 	 */
 	address = address & huge_page_mask(h);
-	pgoff = ((address - vma->vm_start) >> PAGE_SHIFT)
-		+ (vma->vm_pgoff >> PAGE_SHIFT);
+	pgoff = vma_hugecache_offset(h, vma, address);
 	mapping = (struct address_space *)page_private(page);
 
 	/*