Skip to content
  • Michael Neuling's avatar
    powerpc: Fix call to subpage_protection() · 1c2c25c7
    Michael Neuling authored
    In:
      powerpc/mm: Fix pgtable cache cleanup with CONFIG_PPC_SUBPAGE_PROT
      commit d28513bc
    
    
      Author: David Gibson <david@gibson.dropbear.id.au>
    
    subpage_protection() was changed to to take an mm rather a pgdir but it
    didn't change calling site in hashpage_preload().  The change wasn't
    noticed at compile time since hashpage_preload() used a void* as the
    parameter to subpage_protection().
    
    This is obviously wrong and can trigger the following crash when
    CONFIG_SLAB, CONFIG_DEBUG_SLAB, CONFIG_PPC_64K_PAGES
    CONFIG_PPC_SUBPAGE_PROT are enabled.
    
    Freeing unused kernel memory: 704k freed
    Unable to handle kernel paging request for data at address 0x6b6b6b6b6b6c49b7
    Faulting instruction address: 0xc0000000000410f4
    cpu 0x2: Vector: 300 (Data Access) at [c00000004233f590]
        pc: c0000000000410f4: .hash_preload+0x258/0x338
        lr: c000000000041054: .hash_preload+0x1b8/0x338
        sp: c00000004233f810
       msr: 8000000000009032
       dar: 6b6b6b6b6b6c49b7
     dsisr: 40000000
      current = 0xc00000007e2c0070
      paca    = 0xc000000007fe0500
        pid   = 1, comm = init
    enter ? for help
    [c00000004233f810] c000000000041020 .hash_preload+0x184/0x338 (unreliable)
    [c00000004233f8f0] c00000000003ed98 .update_mmu_cache+0xb0/0xd0
    [c00000004233f990] c000000000157754 .__do_fault+0x48c/0x5dc
    [c00000004233faa0] c000000000158fd0 .handle_mm_fault+0x508/0xa8c
    [c00000004233fb90] c0000000006acdd4 .do_page_fault+0x428/0x6ac
    [c00000004233fe30] c000000000005260 handle_page_fault+0x20/0x74
    
    Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
    1c2c25c7