Re: [PATCH v6 bpf-next 08/11] bpf: introduce BPF_RAW_TRACEPOINT
From: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Date: 2018-03-27 23:13:39
Also in:
linux-api
----- On Mar 27, 2018, at 6:48 PM, Alexei Starovoitov ast@fb.com wrote:
On 3/27/18 2:04 PM, Steven Rostedt wrote:quoted
+#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
quoted
+ 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