--- /dev/null
+From stable-bounces@linux.kernel.org Fri Jun 6 21:19:26 2008
+Date: Thu, 5 Jun 2008 15:09:02 +0100 (BST)
+From: Hugh Dickins <hugh@veritas.com>
+To: stable@kernel.org
+Message-ID: <Pine.LNX.4.64.0806051501160.7565@blonde.site>
+Cc: Ingo Molnar <mingo@elte.hu>, Thomas Gleixner <tglx@linutronix.de>
+Subject: x86: fix bad pmd ffff810000207xxx(9090909090909090)
+
+From: Hugh Dickins <hugh@veritas.com>
+
+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 | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/arch/x86/mm/init_64.c
++++ b/arch/x86/mm/init_64.c
+@@ -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));