• A
    powerpc/thp: Fix crash on mremap · b3084f4d
    Aneesh Kumar K.V 提交于
    This patch fix the below crash
    
    NIP [c00000000004cee4] .__hash_page_thp+0x2a4/0x440
    LR [c0000000000439ac] .hash_page+0x18c/0x5e0
    ...
    Call Trace:
    [c000000736103c40] [00001ffffb000000] 0x1ffffb000000(unreliable)
    [437908.479693] [c000000736103d50] [c0000000000439ac] .hash_page+0x18c/0x5e0
    [437908.479699] [c000000736103e30] [c00000000000924c] .do_hash_page+0x4c/0x58
    
    On ppc64 we use the pgtable for storing the hpte slot information and
    store address to the pgtable at a constant offset (PTRS_PER_PMD) from
    pmd. On mremap, when we switch the pmd, we need to withdraw and deposit
    the pgtable again, so that we find the pgtable at PTRS_PER_PMD offset
    from new pmd.
    
    We also want to move the withdraw and deposit before the set_pmd so
    that, when page fault find the pmd as trans huge we can be sure that
    pgtable can be located at the offset.
    Signed-off-by: NAneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
    Acked-by: NKirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
    b3084f4d
pgtable-ppc64.h 16.5 KB