diff options
author | Jan Glauber <jang@linux.vnet.ibm.com> | 2011-04-20 10:15:32 +0200 |
---|---|---|
committer | Martin Schwidefsky <sky@mschwide.boeblingen.de.ibm.com> | 2011-04-20 10:15:43 +0200 |
commit | e4c031b4f2515e9531d71c8aa779799231dbcd0c (patch) | |
tree | 1fc12df988d36cf50500d2014625a5e2ca8a15fb /arch/s390/mm/pageattr.c | |
parent | c708c57e247775928b9a6bce7b4d8d14883bf39b (diff) | |
download | op-kernel-dev-e4c031b4f2515e9531d71c8aa779799231dbcd0c.zip op-kernel-dev-e4c031b4f2515e9531d71c8aa779799231dbcd0c.tar.gz |
[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>
Diffstat (limited to 'arch/s390/mm/pageattr.c')
-rw-r--r-- | arch/s390/mm/pageattr.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/arch/s390/mm/pageattr.c b/arch/s390/mm/pageattr.c index 122ffbd..0607e4b 100644 --- a/arch/s390/mm/pageattr.c +++ b/arch/s390/mm/pageattr.c @@ -24,12 +24,13 @@ static void change_page_attr(unsigned long addr, int numpages, WARN_ON_ONCE(1); continue; } - ptep = pte_offset_kernel(pmdp, addr + i * PAGE_SIZE); + ptep = pte_offset_kernel(pmdp, addr); pte = *ptep; pte = set(pte); - ptep_invalidate(&init_mm, addr + i * PAGE_SIZE, ptep); + ptep_invalidate(&init_mm, addr, ptep); *ptep = pte; + addr += PAGE_SIZE; } } |