On 12/13/17 7:44 AM, Daniel Borkmann wrote:
On 12/13/2017 08:42 AM, Yonghong Song wrote:Commit f371b304f12e ("bpf/tracing: allow user space to query prog array on the same tp") introduced a perf ioctl command to query prog array attached to the same perf tracepoint. The commit introduced a compilation error when either CONFIG_BPF_SYSCALL or CONFIG_EVENT_TRACING is not defined: kernel/events/core.o: In function `perf_ioctl': core.c:(.text+0x98c4): undefined reference to `bpf_event_query_prog_array'This patch fixed this error. Fixes: f371b304f12e ("bpf/tracing: allow user space to query prog array on the same tp") Reported-by: Stephen Rothwell <[email protected]> Signed-off-by: Yonghong Song <[email protected]>Looking at _perf_ioctl(), we also have perf_event_set_bpf_prog() there. It's basically under CONFIG_EVENT_TRACING, which later calls perf_event_attach_bpf_prog() which is under CONFIG_BPF_EVENTS, so where we have the dummy handler returning -EOPNOTSUPP when BPF events is not set. bpf_trace.c is only built when CONFIG_BPF_EVENTS is set and that by itself depends on BPF_SYSCALL already. So it would be more correct to do the same thing here ... #if defined(CONFIG_EVENT_TRACING) && defined(CONFIG_BPF_EVENTS) [...]
+1 #ifdef CONFIG_BPF_EVENTS works, whereas CONFIG_EVENT_TRACING probably not, since kprobe can be disabled independently which will turn off BPF_EVENTS and body of bpf_event_query_prog_array() will be gone.
