diff --git a/arch/s390/mm/vmem.c b/arch/s390/mm/vmem.c
index 2020ef8c041339dfa1aaf9c53e973dc616f4a18f..4badd8252e3c73043b1d64e62fc5dc48c37e4ee9 100644
--- a/arch/s390/mm/vmem.c
+++ b/arch/s390/mm/vmem.c
@@ -148,9 +148,7 @@ static void vmem_remove_range(unsigned long start, unsigned long size)
 	pud_t *pu_dir;
 	pmd_t *pm_dir;
 	pte_t *pt_dir;
-	pte_t  pte;
 
-	pte_val(pte) = _PAGE_INVALID;
 	while (address < end) {
 		pg_dir = pgd_offset_k(address);
 		if (pgd_none(*pg_dir)) {
@@ -178,7 +176,7 @@ static void vmem_remove_range(unsigned long start, unsigned long size)
 			continue;
 		}
 		pt_dir = pte_offset_kernel(pm_dir, address);
-		*pt_dir = pte;
+		pte_clear(&init_mm, address, pt_dir);
 		address += PAGE_SIZE;
 	}
 	flush_tlb_kernel_range(start, end);