Skip to content
  • Gerald Schaefer's avatar
    s390/mm: fix set_huge_pte_at() for empty ptes · ac8372f3
    Gerald Schaefer authored
    
    
    On s390, the layout of normal and large ptes (i.e. pmds/puds) differs.
    Therefore, set_huge_pte_at() does a conversion from a normal pte to
    the corresponding large pmd/pud. So, when converting an empty pte, this
    should result in an empty pmd/pud, which would return true for
    pmd/pud_none().
    
    However, after conversion we also mark the pmd/pud as large, and
    therefore present. For empty ptes, this will result in an empty pmd/pud
    that is also marked as large, and pmd/pud_none() would not return true.
    
    There is currently no issue with this behaviour, as set_huge_pte_at()
    does not seem to be called for empty ptes. It would be valid though, so
    let's fix this by not marking empty ptes as large in set_huge_pte_at().
    
    This was found by testing a patch from from Anshuman Khandual, which is
    currently discussed on LKML ("mm/debug: Add more arch page table helper
    tests").
    
    Signed-off-by: default avatarGerald Schaefer <gerald.schaefer@de.ibm.com>
    Signed-off-by: default avatarVasily Gorbik <gor@linux.ibm.com>
    ac8372f3