• M
    [S390] pud_present/pmd_present bug. · 0d017923
    Martin Schwidefsky 提交于
    Git commit 3610cce8 (yeah my own :-/)
    introduced a bug in regard to pud/pmd table entries.
    If the address of the page table refered to by a pud/pmd value happens
    to have zeroes in the lower 32 bits, pud_present and pmd_present return
    false. The obvious effect is that this triggers the BUG_ON in exit_mmap
    because some ptes will not get released on process end.  Worse is that
    the next fault for memory covered by that pud/pmd will allocate another
    pmd/pte table and populate the pud/pmd entry. The old page table
    entries hanging below this entry are lost!
    
    The fix is simple, properly check against 0. The check is added for
    pud_none/pmd_none as well even if these two functions work because
    the invalid bit is in the lower 32 bits.
    Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
    0d017923
pgtable.h 29.9 KB