From 378b1e7a80a59325ca1036e892462db728126f84 Mon Sep 17 00:00:00 2001 From: Heiko Carstens Date: Mon, 1 Oct 2012 12:58:34 +0200 Subject: 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 Signed-off-by: Heiko Carstens Signed-off-by: Martin Schwidefsky --- arch/s390/mm/pageattr.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'arch/s390/mm/pageattr.c') 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; } -- cgit v1.2.3