• C
    arm64: kdump: Skip kmemleak scan reserved memory for kdump · 85f58eb1
    Chen Wandun 提交于
    Trying to boot with kdump + kmemleak, command will result in a crash:
    "echo scan > /sys/kernel/debug/kmemleak"
    
    crashkernel reserved: 0x0000000007c00000 - 0x0000000027c00000 (512 MB)
    Kernel command line: BOOT_IMAGE=(hd1,gpt2)/vmlinuz-5.14.0-rc5-next-20210809+ root=/dev/mapper/ao-root ro rd.lvm.lv=ao/root rd.lvm.lv=ao/swap crashkernel=512M
    Unable to handle kernel paging request at virtual address ffff000007c00000
    Mem abort info:
      ESR = 0x96000007
      EC = 0x25: DABT (current EL), IL = 32 bits
      SET = 0, FnV = 0
      EA = 0, S1PTW = 0
      FSC = 0x07: level 3 translation fault
    Data abort info:
      ISV = 0, ISS = 0x00000007
      CM = 0, WnR = 0
    swapper pgtable: 64k pages, 48-bit VAs, pgdp=00002024f0d80000
    [ffff000007c00000] pgd=1800205ffffd0003, p4d=1800205ffffd0003, pud=1800205ffffd0003, pmd=1800205ffffc0003, pte=0068000007c00f06
    Internal error: Oops: 96000007 [#1] SMP
    pstate: 804000c9 (Nzcv daIF +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
    pc : scan_block+0x98/0x230
    lr : scan_block+0x94/0x230
    sp : ffff80008d6cfb70
    x29: ffff80008d6cfb70 x28: 0000000000000000 x27: 0000000000000000
    x26: 00000000000000c0 x25: 0000000000000001 x24: 0000000000000000
    x23: ffffa88a6b18b398 x22: ffff000007c00ff9 x21: ffffa88a6ac7fc40
    x20: ffffa88a6af6a830 x19: ffff000007c00000 x18: 0000000000000000
    x17: 0000000000000000 x16: 0000000000000000 x15: ffffffffffffffff
    x14: ffffffff00000000 x13: ffffffffffffffff x12: 0000000000000020
    x11: 0000000000000000 x10: 0000000001080000 x9 : ffffa88a6951c77c
    x8 : ffffa88a6a893988 x7 : ffff203ff6cfb3c0 x6 : ffffa88a6a52b3c0
    x5 : ffff203ff6cfb3c0 x4 : 0000000000000000 x3 : 0000000000000000
    x2 : 0000000000000001 x1 : ffff20226cb56a40 x0 : 0000000000000000
    Call trace:
     scan_block+0x98/0x230
     scan_gray_list+0x120/0x270
     kmemleak_scan+0x3a0/0x648
     kmemleak_write+0x3ac/0x4c8
     full_proxy_write+0x6c/0xa0
     vfs_write+0xc8/0x2b8
     ksys_write+0x70/0xf8
     __arm64_sys_write+0x24/0x30
     invoke_syscall+0x4c/0x110
     el0_svc_common+0x9c/0x190
     do_el0_svc+0x30/0x98
     el0_svc+0x28/0xd8
     el0t_64_sync_handler+0x90/0xb8
     el0t_64_sync+0x180/0x184
    
    The reserved memory for kdump will be looked up by kmemleak, this area
    will be set invalid when kdump service is bring up. That will result in
    crash when kmemleak scan this area.
    
    Fixes: a7259df7 ("memblock: make memblock_find_in_range method private")
    Signed-off-by: NChen Wandun <chenwandun@huawei.com>
    Reviewed-by: NKefeng Wang <wangkefeng.wang@huawei.com>
    Reviewed-by: NMike Rapoport <rppt@linux.ibm.com>
    Reviewed-by: NCatalin Marinas <catalin.marinas@arm.com>
    Link: https://lore.kernel.org/r/20210910064844.3827813-1-chenwandun@huawei.comSigned-off-by: NCatalin Marinas <catalin.marinas@arm.com>
    85f58eb1
init.c 15.3 KB