diff --git a/mm/page_table_check.c b/mm/page_table_check.c
index 2458281bff893bc68576bcf269c039c8fc6c26c7..bc55be28807f80240e294d39ae7e99d6bba85aea 100644
--- a/mm/page_table_check.c
+++ b/mm/page_table_check.c
@@ -251,11 +251,11 @@ void __page_table_check_pte_clear_range(struct mm_struct *mm,
 		pte_t *ptep = pte_offset_map(&pmd, addr);
 		unsigned long i;
 
-		pte_unmap(ptep);
 		for (i = 0; i < PTRS_PER_PTE; i++) {
 			__page_table_check_pte_clear(mm, addr, *ptep);
 			addr += PAGE_SIZE;
 			ptep++;
 		}
+		pte_unmap(ptep - PTRS_PER_PTE);
 	}
 }