----- On Mar 27, 2018, at 6:48 PM, Alexei Starovoitov ast@xxxxxx wrote: > On 3/27/18 2:04 PM, Steven Rostedt wrote: >> >> +#ifdef CONFIG_BPF_EVENTS >> +#define BPF_RAW_TP() . = ALIGN(8); \ Given that the section consists of a 16-bytes structure elements on architectures with 8 bytes pointers, this ". = ALIGN(8)" should be turned into a STRUCT_ALIGN(), especially given that the compiler is free to up-align the structure on 32 bytes. This could explain the kasan splat you are experiencing. Thanks, Mathieu >> + VMLINUX_SYMBOL(__start__bpf_raw_tp) = .; \ >> + KEEP(*(__bpf_raw_tp_map)) \ >> + VMLINUX_SYMBOL(__stop__bpf_raw_tp) = .; > > that looks to be correct, but something wrong with it. > > Can you try your mini test with kasan on ? > > I'm seeing this crash: > test_stacktrace_[ 18.760662] start ffffffff84642438 stop ffffffff84644f60 > map_raw_tp:PASS:[ 18.761467] i 1 btp->tp cccccccccccccccc > prog_load raw tp[ 18.762064] kasan: CONFIG_KASAN_INLINE enabled > 0 nsec > [ 18.762704] kasan: GPF could be caused by NULL-ptr deref or user > memory access > [ 18.765125] general protection fault: 0000 [#1] SMP KASAN PTI > [ 18.765830] Modules linked in: > [ 18.778358] Call Trace: > [ 18.778674] bpf_raw_tracepoint_open.isra.27+0x92/0x380 > > for some reason the start_bpf_raw_tp is off by 8. > Not sure how it works for you. > > (gdb) p &__bpf_trace_tp_map_sys_exit > $10 = (struct bpf_raw_event_map *) 0xffffffff84642440 > <__bpf_trace_tp_map_sys_exit> > > (gdb) p &__start__bpf_raw_tp > $7 = (<data variable, no debug info> *) 0xffffffff84642438 > > (gdb) p (void*)(&__start__bpf_raw_tp)+8 > $11 = (void *) 0xffffffff84642440 <__bpf_trace_tp_map_sys_exit> -- Mathieu Desnoyers EfficiOS Inc. http://www.efficios.com -- To unsubscribe from this list: send the line "unsubscribe linux-api" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html