From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753686AbbIKQC6 (ORCPT ); Fri, 11 Sep 2015 12:02:58 -0400 Received: from mga03.intel.com ([134.134.136.65]:35806 "EHLO mga03.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753651AbbIKQC4 (ORCPT ); Fri, 11 Sep 2015 12:02:56 -0400 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.17,511,1437462000"; d="scan'208";a="767126398" From: Alexander Shishkin To: Peter Zijlstra , Ingo Molnar Cc: linux-kernel@vger.kernel.org, vince@deater.net, eranian@google.com, johannes@sipsolutions.net, Arnaldo Carvalho de Melo , Alexander Shishkin Subject: [PATCH RFC v3 6/6] perf tools: Use extended syscall error reporting Date: Fri, 11 Sep 2015 19:00:05 +0300 Message-Id: <1441987205-4021-7-git-send-email-alexander.shishkin@linux.intel.com> X-Mailer: git-send-email 2.5.1 In-Reply-To: <1441987205-4021-1-git-send-email-alexander.shishkin@linux.intel.com> References: <1441987205-4021-1-git-send-email-alexander.shishkin@linux.intel.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org If the kernel has an extended error report for us, use it instead of trying to guess what might have gone wrong. Signed-off-by: Alexander Shishkin --- tools/perf/util/evsel.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/tools/perf/util/evsel.c b/tools/perf/util/evsel.c index c53f79123b..1804781072 100644 --- a/tools/perf/util/evsel.c +++ b/tools/perf/util/evsel.c @@ -27,6 +27,7 @@ #include "debug.h" #include "trace-event.h" #include "stat.h" +#include "exterr.h" static struct { bool sample_id_all; @@ -2266,7 +2267,16 @@ bool perf_evsel__fallback(struct perf_evsel *evsel, int err, int perf_evsel__open_strerror(struct perf_evsel *evsel, struct target *target, int err, char *msg, size_t size) { - char sbuf[STRERR_BUFSIZE]; + char sbuf[BUFSIZ]; + int ret; + + ret = exterr__strerror(msg, size); + /* + * If kernel gave an extended error description, don't try to be any + * more helpful here. + */ + if (ret > 0) + return ret; switch (err) { case EPERM: -- 2.5.1