• Daniel Axtens's avatar
    powerpc/64s: Disable sanitisers for C syscall/interrupt entry/exit code · 2f26ed17
    Daniel Axtens authored
    syzkaller is picking up a bunch of crashes that look like this:
    
      Unrecoverable exception 380 at c00000000037ed60 (msr=8000000000001031)
      Oops: Unrecoverable exception, sig: 6 [#1]
      LE PAGE_SIZE=64K MMU=Hash SMP NR_CPUS=2048 NUMA pSeries
      Modules linked in:
      CPU: 0 PID: 874 Comm: syz-executor.0 Not tainted 5.7.0-rc7-syzkaller-00016-gb0c3ba31 #0
      NIP:  c00000000037ed60 LR: c00000000004bac8 CTR: c000000000030990
      REGS: c0000000555a7230 TRAP: 0380   Not tainted  (5.7.0-rc7-syzkaller-00016-gb0c3ba31)
      MSR:  8000000000001031 <SF,ME,IR,DR,LE>  CR: 48222882  XER: 20000000
      CFAR: c00000000004bac4 IRQMASK: 0
      GPR00: c00000000004bb68 c0000000555a74c0 c0000000024b3500 0000000000000005
      GPR04: 0000000000000000 0000000000000000 c00000000004bb88 c008000000910000
      GPR08: 00000000000b0000 c00000000004bac8 0000000000016000 c000000002503500
      GPR12: c000000000030990 c000000003190000 00000000106a5898 00000000106a0000
      GPR16: 00000000106a5890 c000000007a92000 c000000008180e00 c000000007a8f700
      GPR20: c000000007a904b0 0000000010110000 c00000000259d318 5deadbeef0000100
      GPR24: 5deadbeef0000122 c000000078422700 c000000009ee88b8 c000000078422778
      GPR28: 0000000000000001 800000000280b033 0000000000000000 c0000000555a75a0
      NIP [c00000000037ed60] __sanitizer_cov_trace_pc+0x40/0x50
      LR [c00000000004bac8] interrupt_exit_kernel_prepare+0x118/0x310
      Call Trace:
      [c0000000555a74c0] [c00000000004bb68] interrupt_exit_kernel_prepare+0x1b8/0x310 (unreliable)
      [c0000000555a7530] [c00000000000f9a8] interrupt_return+0x118/0x1c0
      --- interrupt: 900 at __sanitizer_cov_trace_pc+0x0/0x50
      ...<random previous call chain>...
    
    This is caused by __sanitizer_cov_trace_pc() causing an SLB fault
    after MSR[RI] has been cleared by __hard_EE_RI_disable(), which we
    can not recover from.
    
    Do not instrument the new syscall/interrupt entry/exit code with KCOV,
    GCOV or UBSAN.
    Reported-by: default avatarsyzbot-ppc64 <ozlabsyz@au1.ibm.com>
    Fixes: 68b34588 ("powerpc/64/sycall: Implement syscall entry/exit logic in C")
    Signed-off-by: default avatarDaniel Axtens <dja@axtens.net>
    Acked-by: default avatarAndrew Donnellan <ajd@linux.ibm.com>
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    2f26ed17
Makefile 6.09 KB