[PATCH 0/2] pageattr fixes for pmd/pte_present

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

I got a report for a minor regression introduced by commit
027ef6c87853b0a9df53175063028edb4950d476.

So the problem is, pageattr creates kernel pagetables (pte and pmds)
that breaks pte_present/pmd_present and the patch above exposed this
invariant breakage for pmd_present.

The same problem already existed for the pte and pte_present and it
was fixed by commit 660a293ea9be709b893d371fbc0328fcca33c33a (if it
wasn't for that commit, it wouldn't even be a regression). That fix
avoids the pagefault to use pte_present. I could follow through by
stopping using pmd_present/pmd_huge too.

However I think it's more robust to fix pageattr and to clear the
PSE/GLOBAL bitflags too in addition to the present bitflag. So the
kernel page fault can keep using the regular
pte_present/pmd_present/pmd_huge.

The confusion arises because _PAGE_GLOBAL and _PAGE_PROTNONE are
sharing the same bit, and in the pmd case we pretend _PAGE_PSE to be
set only in present pmds (to facilitate split_huge_page final tlb
flush).

Andrea Arcangeli (2):
  Revert "x86, mm: Make spurious_fault check explicitly check the
    PRESENT bit"
  pageattr: prevent PSE and GLOABL leftovers to confuse pmd/pte_present
    and pmd_huge

 arch/x86/mm/fault.c    |    8 +------
 arch/x86/mm/pageattr.c |   50 +++++++++++++++++++++++++++++++++++++++++++++--
 2 files changed, 48 insertions(+), 10 deletions(-)

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@xxxxxxxxx.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@xxxxxxxxx";> email@xxxxxxxxx </a>


[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]