From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753252AbdK0UFx (ORCPT ); Mon, 27 Nov 2017 15:05:53 -0500 Received: from mail.kernel.org ([198.145.29.99]:35696 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752296AbdK0UFv (ORCPT ); Mon, 27 Nov 2017 15:05:51 -0500 DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 1B6CD21909 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=acme@kernel.org Date: Mon, 27 Nov 2017 17:05:47 -0300 From: Arnaldo Carvalho de Melo To: Yonghong Song Cc: Daniel Borkmann , Josh Poimboeuf , Wang Nan , Alexei Starovoitov , Adrian Hunter , David Ahern , Jiri Olsa , Ingo Molnar , Namhyung Kim , Linux Kernel Mailing List Subject: Re: perf test LLVM & clang 6 failing Message-ID: <20171127200547.GD3298@kernel.org> References: <20171124144717.GO8789@kernel.org> <7cd16670-37c9-21f5-21c8-d50385ebc951@iogearbox.net> <20171127170435.GA3298@kernel.org> <7f618077-3a04-04b6-f6df-cf91d3ff4424@fb.com> <20171127193425.GC3298@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20171127193425.GC3298@kernel.org> X-Url: http://acmel.wordpress.com User-Agent: Mutt/1.9.1 (2017-09-22) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Em Mon, Nov 27, 2017 at 04:34:25PM -0300, Arnaldo Carvalho de Melo escreveu: > So, I noticed that any maps are failing, I'll go dig, but may be some > new security tightening, even running as root, this was working > recently, was even part of our discussion on the bpf_probe_read_str() > trouble with clang's optimizer: > > [root@jouet bpf]# cat open.c > #include "bpf.h" > > SEC("prog=do_sys_open filename") > int prog(void *ctx, int err, char *filename_ptr) > { > char filename[128]; > int len = bpf_probe_read_str(filename, sizeof(filename), filename_ptr); > if (len > 0) { > if (len == 1) > perf_event_output(ctx, &__bpf_stdout__, BPF_F_CURRENT_CPU, filename, len); > else if (len < 128) > perf_event_output(ctx, &__bpf_stdout__, BPF_F_CURRENT_CPU, filename, len); > } > return 1; > } > [root@jouet bpf]# > > Found 1 probe_trace_events. > Opening /sys/kernel/debug/tracing//kprobe_events write=1 > Writing event: p:perf_bpf_probe/prog _text+2493856 filename=%si:x64 > In map_prologue, ntevs=1 > mapping[0]=0 > libbpf: failed to create map (name: '__bpf_stdout__'): Invalid argument > libbpf: failed to load object 'open.c' > bpf: load objects failed > event syntax error: 'open.c' > \___ Operation not permitted > > > Using 'perf ftrace' to trace just 'perf trace': > > [root@jouet bpf]# perf ftrace -G SyS_bpf perf trace -v -e open.c,open cat /tmp/somefile 2> /dev/null > 0) | SyS_bpf() { > 0) | capable() { > 0) | ns_capable_common() { > 0) | security_capable() { > 0) 0.045 us | cap_capable(); > 0) | selinux_capable() { > 0) 0.274 us | cred_has_capability(); > 0) 0.518 us | } > 0) 1.464 us | } > 0) 1.783 us | } > 0) 2.130 us | } > 0) 0.458 us | check_uarg_tail_zero(); > 0) | __check_object_size() { > 0) 0.046 us | __virt_addr_valid(); > 0) 0.040 us | check_stack_object(); > 0) 0.510 us | } > 0) 4.161 us | } > [root@jouet bpf]# > > /me goes to look at SyS_bpf() in this kernel... (4.14.0+). Tracing 'perf trace' with 'perf trace' we see: # perf trace -e bpf perf trace -e open.c,open cat /tmp/somefile 0.000 ( 0.015 ms): perf/16767 bpf(cmd: MAP_CREATE, uattr: 0x7ffc3c8c7ac0, size: 72) = -1 EINVAL Invalid argument # Humm, # perf probe check_stack_object%return 'ret=$retval' Added new event: probe:check_stack_object (on check_stack_object%return with ret=$retval) You can now use it in all perf tools, such as: perf record -e probe:check_stack_object -aR sleep 1 # # perf trace -e bpf,probe:check* perf trace -e open.c,open cat /tmp/somefile