]> git.hungrycats.org Git - linux/commitdiff
x86: fix bad pmd ffff810000207xxx(9090909090909090)
authorHugh Dickins <hugh@veritas.com>
Thu, 5 Jun 2008 14:09:02 +0000 (15:09 +0100)
committerChris Wright <chrisw@sous-sol.org>
Mon, 9 Jun 2008 18:27:06 +0000 (11:27 -0700)
upstream commit: 2884f110d5409714f3a04eeb6d2ecd77da66b242

OGAWA Hirofumi and Fede have reported rare pmd_ERROR messages:
mm/memory.c:127: bad pmd ffff810000207xxx(9090909090909090).

Initialization's cleanup_highmap was leaving alignment filler
behind in the pmd for MODULES_VADDR: when vmalloc's guard page
would occupy a new page table, it's not allocated, and then
module unload's vfree hits the bad 9090 pmd entry left over.

Signed-off-by: Hugh Dickins <hugh@veritas.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Hugh notes:

 It's actually not a serious problem, but it does look as if it's a
 serious problem, so we should stamp it out.

Signed-off-by: Chris Wright <chrisw@sous-sol.org>
arch/x86/mm/init_64.c

index a02a14f0f324f9a3392810a46d587dfcda23a157..b2c5231c468641c6b69712fb7ed6450168d93a82 100644 (file)
@@ -192,7 +192,7 @@ void __init cleanup_highmap(void)
        pmd_t *last_pmd = pmd + PTRS_PER_PMD;
 
        for (; pmd < last_pmd; pmd++, vaddr += PMD_SIZE) {
-               if (!pmd_present(*pmd))
+               if (pmd_none(*pmd))
                        continue;
                if (vaddr < (unsigned long) _text || vaddr > end)
                        set_pmd(pmd, __pmd(0));