Browse Source

[S390] fix page table walk for changing page attributes

The page table walk for changing page attributes used the wrong
address for pgd/pud/pmd lookups if the range was bigger than
a pmd entry. Fix the lookup by using the correct address.

Signed-off-by: Jan Glauber <jang@linux.vnet.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Jan Glauber 14 years ago
parent
commit
e4c031b4f2
1 changed files with 3 additions and 2 deletions
  1. 3 2
      arch/s390/mm/pageattr.c

+ 3 - 2
arch/s390/mm/pageattr.c

@@ -24,12 +24,13 @@ static void change_page_attr(unsigned long addr, int numpages,
 			WARN_ON_ONCE(1);
 			WARN_ON_ONCE(1);
 			continue;
 			continue;
 		}
 		}
-		ptep = pte_offset_kernel(pmdp, addr + i * PAGE_SIZE);
+		ptep = pte_offset_kernel(pmdp, addr);
 
 
 		pte = *ptep;
 		pte = *ptep;
 		pte = set(pte);
 		pte = set(pte);
-		ptep_invalidate(&init_mm, addr + i * PAGE_SIZE, ptep);
+		ptep_invalidate(&init_mm, addr, ptep);
 		*ptep = pte;
 		*ptep = pte;
+		addr += PAGE_SIZE;
 	}
 	}
 }
 }