From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S934456AbcAZMPt (ORCPT ); Tue, 26 Jan 2016 07:15:49 -0500 Received: from mga03.intel.com ([134.134.136.65]:16109 "EHLO mga03.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933038AbcAZMIr (ORCPT ); Tue, 26 Jan 2016 07:08:47 -0500 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.22,350,1449561600"; d="scan'208";a="901340031" From: Adrian Hunter To: Arnaldo Carvalho de Melo Cc: Jiri Olsa , linux-kernel@vger.kernel.org Subject: [PATCH 1/2] perf tools: Fix seg fault with Intel PT Date: Tue, 26 Jan 2016 14:05:20 +0200 Message-Id: <1453809921-24596-2-git-send-email-adrian.hunter@intel.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1453809921-24596-1-git-send-email-adrian.hunter@intel.com> References: <1453809921-24596-1-git-send-email-adrian.hunter@intel.com> Organization: Intel Finland Oy, Registered Address: PL 281, 00181 Helsinki, Business Identity Code: 0357606 - 4, Domiciled in Helsinki Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Fix segmentation fault using: perf record -e intel_pt//u uname Back trace: 0 tracepoint_error (err=13, err@entry=-13, sys=sys@entry=0x18706c0 "sched", name=name@entry=0x1871c70 "sched_switch", e=, e=) at util/parse-events.c:416 1 0x000000000049791c in add_tracepoint (head_config=0x0, err=0x0, evt_name=0x1871c70 "sched_switch", sys_name=0x18706c0 "sched", idx=, list=) at util/parse-events.c:433 2 add_tracepoint_event (list=, idx=, sys_name=0x18706c0 "sched", evt_name=0x1871c70 "sched_switch", err=0x0, head_config=0x0) at util/parse-events.c:498 3 0x0000000000498ec4 in parse_events_add_tracepoint (list=list@entry=0x1871c90, idx=idx@entry=0x7fffffffba30, sys=0x18706c0 "sched", event=0x1871c70 "sched_switch", err=err@entry=0x0, head_config=head_config@entry=0x0) at util/parse-events.c:936 4 0x00000000004ccff2 in parse_events_parse (_data=_data@entry=0x7fffffffba20, scanner=0x18705f0) at util/parse-events.y:391 5 0x000000000049a567 in parse_events__scanner (start_token=258, data=0x7fffffffba20, str=0x0) at util/parse-events.c:1361 6 parse_events (evlist=evlist@entry=0x1871150, str=str@entry=0x55ef6c "sched:sched_switch", err=err@entry=0x0) at util/parse-events.c:1401 7 0x00000000004eb4b6 in perf_evlist__can_select_event (evlist=evlist@entry=0x186fb90, str=str@entry=0x55ef6c "sched:sched_switch") at util/record.c:253 8 0x000000000051e1d3 in intel_pt_track_switches (evlist=0x186fb90) at arch/x86/util/intel-pt.c:362 9 intel_pt_recording_options (itr=0x186ef70, evlist=0x186fb90, opts=0x7c3e08 ) at arch/x86/util/intel-pt.c:662 10 0x000000000042e244 in cmd_record (argc=1, argv=0x7fffffffe270, prefix=) at builtin-record.c:1260 11 0x000000000047cbd3 in run_builtin (p=p@entry=0x7cf2e8 , argc=argc@entry=4, argv=argv@entry=0x7fffffffe270) at perf.c:390 12 0x00000000004216a7 in handle_internal_command (argv=0x7fffffffe270, argc=4) at perf.c:451 13 run_argv (argv=0x7fffffffdff0, argcp=0x7fffffffdffc) at perf.c:495 14 main (argc=4, argv=0x7fffffffe270) at perf.c:618 Intel PT attempts to find the sched:sched_switch tracepoint but that seg faults if tracefs is not readable, because the error reporting structure is null, as errors are not reported when automatically adding tracepoints. Fix by checking before using. Signed-off-by: Adrian Hunter Fixes: 196581717d85 ("perf tools: Enhance parsing events tracepoint error output") Cc: stable@vger.kernel.org # v4.4+ --- tools/perf/util/parse-events.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tools/perf/util/parse-events.c b/tools/perf/util/parse-events.c index 4f7b0efdde2f..813d9b272c81 100644 --- a/tools/perf/util/parse-events.c +++ b/tools/perf/util/parse-events.c @@ -399,6 +399,9 @@ static void tracepoint_error(struct parse_events_error *e, int err, { char help[BUFSIZ]; + if (!e) + return; + /* * We get error directly from syscall errno ( > 0), * or from encoded pointer's error ( < 0). -- 1.9.1