diff --git a/mm/memory.c b/mm/memory.c
index c74ced6b9ccae7d8b24e7e49f6e665356ce67366..e3fa88c4f6a38c7be954367ce99529efb9f37fc5 100644
--- a/mm/memory.c
+++ b/mm/memory.c
@@ -1041,7 +1041,8 @@ static inline int zeromap_pud_range(struct mm_struct *mm, pud_t * pud,
 		error = -ENOMEM;
 		if (!pmd)
 			break;
-		error = zeromap_pmd_range(mm, pmd, address, end - address, prot);
+		error = zeromap_pmd_range(mm, pmd, base + address,
+					  end - address, prot);
 		if (error)
 			break;
 		address = (address + PUD_SIZE) & PUD_MASK;