From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S935020AbdGTIli (ORCPT ); Thu, 20 Jul 2017 04:41:38 -0400 Received: from terminus.zytor.com ([65.50.211.136]:59317 "EHLO terminus.zytor.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S934993AbdGTIl0 (ORCPT ); Thu, 20 Jul 2017 04:41:26 -0400 Date: Thu, 20 Jul 2017 01:39:11 -0700 From: tip-bot for Arnaldo Carvalho de Melo Message-ID: Cc: namhyung@kernel.org, mingo@kernel.org, acme@redhat.com, linux-kernel@vger.kernel.org, hpa@zytor.com, wangnan0@huawei.com, adrian.hunter@intel.com, jolsa@kernel.org, dsahern@gmail.com, tglx@linutronix.de Reply-To: jolsa@kernel.org, adrian.hunter@intel.com, dsahern@gmail.com, tglx@linutronix.de, wangnan0@huawei.com, hpa@zytor.com, linux-kernel@vger.kernel.org, mingo@kernel.org, acme@redhat.com, namhyung@kernel.org To: linux-tip-commits@vger.kernel.org Subject: [tip:perf/core] perf trace beauty: Mask ignored fcntl 'arg' parameter Git-Commit-ID: 9cb7cf86440229fd6e6ad1718712742c344653d8 X-Mailer: tip-git-log-daemon Robot-ID: Robot-Unsubscribe: Contact to get blacklisted from these emails MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8 Content-Disposition: inline Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Commit-ID: 9cb7cf86440229fd6e6ad1718712742c344653d8 Gitweb: http://git.kernel.org/tip/9cb7cf86440229fd6e6ad1718712742c344653d8 Author: Arnaldo Carvalho de Melo AuthorDate: Fri, 14 Jul 2017 09:44:50 -0300 Committer: Arnaldo Carvalho de Melo CommitDate: Tue, 18 Jul 2017 23:13:52 -0300 perf trace beauty: Mask ignored fcntl 'arg' parameter A series of fcntl cmds ignore the third argument, so mask it. Cc: Adrian Hunter Cc: David Ahern Cc: Jiri Olsa Cc: Namhyung Kim Cc: Wang Nan Link: http://lkml.kernel.org/n/tip-6vtl3zq1tauamrhm8o380ptn@git.kernel.org Signed-off-by: Arnaldo Carvalho de Melo --- tools/perf/builtin-trace.c | 2 +- tools/perf/trace/beauty/Build | 1 + tools/perf/trace/beauty/beauty.h | 3 +++ tools/perf/trace/beauty/fcntl.c | 23 +++++++++++++++++++++++ 4 files changed, 28 insertions(+), 1 deletion(-) diff --git a/tools/perf/builtin-trace.c b/tools/perf/builtin-trace.c index ef1b1d4..b7f79de 100644 --- a/tools/perf/builtin-trace.c +++ b/tools/perf/builtin-trace.c @@ -661,7 +661,7 @@ static struct syscall_fmt { { .name = "fchownat", .errmsg = true, .arg_scnprintf = { [0] = SCA_FDAT, /* fd */ }, }, { .name = "fcntl", .errmsg = true, - .arg_scnprintf = { [1] = SCA_STRARRAYS, /* cmd */ }, + .arg_scnprintf = { [1] = SCA_FCNTL_CMD, /* cmd */ }, .arg_parm = { [1] = &strarrays__fcntl_cmds_arrays, /* cmd */ }, }, { .name = "fdatasync", .errmsg = true, }, { .name = "flock", .errmsg = true, diff --git a/tools/perf/trace/beauty/Build b/tools/perf/trace/beauty/Build index be95ac6..c9e215b 100644 --- a/tools/perf/trace/beauty/Build +++ b/tools/perf/trace/beauty/Build @@ -1 +1,2 @@ +libperf-y += fcntl.o libperf-y += statx.o diff --git a/tools/perf/trace/beauty/beauty.h b/tools/perf/trace/beauty/beauty.h index a634807..ce01079 100644 --- a/tools/perf/trace/beauty/beauty.h +++ b/tools/perf/trace/beauty/beauty.h @@ -18,6 +18,9 @@ struct syscall_arg { size_t syscall_arg__scnprintf_strarrays(char *bf, size_t size, struct syscall_arg *arg); #define SCA_STRARRAYS syscall_arg__scnprintf_strarrays +size_t syscall_arg__scnprintf_fcntl_cmd(char *bf, size_t size, struct syscall_arg *arg); +#define SCA_FCNTL_CMD syscall_arg__scnprintf_fcntl_cmd + size_t syscall_arg__scnprintf_statx_flags(char *bf, size_t size, struct syscall_arg *arg); #define SCA_STATX_FLAGS syscall_arg__scnprintf_statx_flags diff --git a/tools/perf/trace/beauty/fcntl.c b/tools/perf/trace/beauty/fcntl.c new file mode 100644 index 0000000..7e4582c --- /dev/null +++ b/tools/perf/trace/beauty/fcntl.c @@ -0,0 +1,23 @@ +/* + * trace/beauty/fcntl.c + * + * Copyright (C) 2017, Red Hat Inc, Arnaldo Carvalho de Melo + * + * Released under the GPL v2. (and only v2, not any later version) + */ + +#include "trace/beauty/beauty.h" +#include + +size_t syscall_arg__scnprintf_fcntl_cmd(char *bf, size_t size, struct syscall_arg *arg) +{ + /* + * Some commands ignore the third fcntl argument, "arg", so mask it + */ + if (arg->val == F_GETFD || arg->val == F_GETFL || + arg->val == F_GETOWN || arg->val == F_GET_SEALS || + arg->val == F_GETLEASE || arg->val == F_GETSIG) + arg->mask |= (1 << 2); + + return syscall_arg__scnprintf_strarrays(bf, size, arg); +}