• Aneesh Kumar K.V's avatar
    powerpc/radix: Fix kernel crash with mremap() · 579b9239
    Aneesh Kumar K.V authored
    With support for split pmd lock, we use pmd page pmd_huge_pte pointer
    to store the deposited page table. In those config when we move page
    tables we need to make sure we move the deposited page table to the
    correct pmd page. Otherwise this can result in crash when we withdraw
    of deposited page table because we can find the pmd_huge_pte NULL.
    
    eg:
    
      __split_huge_pmd+0x1070/0x1940
      __split_huge_pmd+0xe34/0x1940 (unreliable)
      vma_adjust_trans_huge+0x110/0x1c0
      __vma_adjust+0x2b4/0x9b0
      __split_vma+0x1b8/0x280
      __do_munmap+0x13c/0x550
      sys_mremap+0x220/0x7e0
      system_call+0x5c/0x70
    
    Fixes: 675d9952 ("powerpc/book3s64: Enable split pmd ptlock.")
    Cc: stable@vger.kernel.org # v4.18+
    Signed-off-by: default avatarAneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    579b9239
pgtable.h 37.9 KB