x86: fix bad pmd ffff810000207xxx(9090909090909090)
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>
This commit is contained in:
parent
226e9a93a2
commit
2884f110d5
@ -206,7 +206,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));
|
||||
|
Loading…
Reference in New Issue
Block a user