• Aneesh Kumar K.V's avatar
    powerpc/mm/radix: Fix kernel crash when running subpage protect test · 2c474c03
    Aneesh Kumar K.V authored
    This patch fixes the below crash by making sure we touch the subpage
    protection related structures only if we know they are allocated on
    the platform. With radix translation we don't allocate hash context at
    all and trying to access subpage_prot_table results in:
    
      Faulting instruction address: 0xc00000000008bdb4
      Oops: Kernel access of bad area, sig: 11 [#1]
      LE PAGE_SIZE=64K MMU=Radix MMU=Hash SMP NR_CPUS=2048 NUMA PowerNV
      ....
      NIP [c00000000008bdb4] sys_subpage_prot+0x74/0x590
      LR [c00000000000b688] system_call+0x5c/0x70
      Call Trace:
      [c00020002c6b7d30] [c00020002c6b7d90] 0xc00020002c6b7d90 (unreliable)
      [c00020002c6b7e20] [c00000000000b688] system_call+0x5c/0x70
      Instruction dump:
      fb61ffd8 fb81ffe0 fba1ffe8 fbc1fff0 fbe1fff8 f821ff11 e92d1178 f9210068
      39200000 e92d0968 ebe90630 e93f03e8 <eb891038> 60000000 3860fffe e9410068
    
    We also move the subpage_prot_table with mmp_sem held to avoid race
    between two parallel subpage_prot syscall.
    
    Fixes: 70110186 ("powerpc/mm: Reduce memory usage for mm_context_t for radix")
    Reported-by: default avatarSachin Sant <sachinp@linux.ibm.com>
    Signed-off-by: default avatarAneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
    Tested-by: default avatarSachin Sant <sachinp@linux.ibm.com>
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    2c474c03
subpage-prot.c 6.72 KB