aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/arch/s390/mm/pageattr.c
diff options
context:
space:
mode:
authorHeiko Carstens <heiko.carstens@de.ibm.com>2012-10-01 12:58:34 +0200
committerMartin Schwidefsky <schwidefsky@de.ibm.com>2012-10-09 14:16:56 +0200
commit378b1e7a80a59325ca1036e892462db728126f84 (patch)
tree6d25959ac7401eee48f76441ca42c2759aef15b4 /arch/s390/mm/pageattr.c
parents390/dcssblk: cleanup device attribute usage (diff)
downloadwireguard-linux-378b1e7a80a59325ca1036e892462db728126f84.tar.xz
wireguard-linux-378b1e7a80a59325ca1036e892462db728126f84.zip
s390/mm: fix pmd_huge() usage for kernel mapping
pmd_huge() will always return 0 on !HUGETLBFS, however we use that helper function when walking the kernel page tables to decide if we have a 1MB page frame or not. Since we create 1MB frames for the kernel 1:1 mapping independently of HUGETLBFS this can lead to incorrect storage accesses since the code can assume that we have a pointer to a page table instead of a pointer to a 1MB frame. Fix this by adding a pmd_large() primitive like other architectures have it already and remove all references to HUGETLBFS/HUGETLBPAGE from the code that walks kernel page tables. Reviewed-by: Gerald Schaefer <gerald.schaefer@de.ibm.com> Signed-off-by: Heiko Carstens <heiko.carstens@de.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.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/s390/mm/pageattr.c b/arch/s390/mm/pageattr.c
index b36537a5f43e..0f33bab3e984 100644
--- a/arch/s390/mm/pageattr.c
+++ b/arch/s390/mm/pageattr.c
@@ -21,7 +21,7 @@ static void change_page_attr(unsigned long addr, int numpages,
pgdp = pgd_offset(&init_mm, addr);
pudp = pud_offset(pgdp, addr);
pmdp = pmd_offset(pudp, addr);
- if (pmd_huge(*pmdp)) {
+ if (pmd_large(*pmdp)) {
WARN_ON_ONCE(1);
continue;
}