From: Li Zhang <zhlcindy@linux.vnet.ibm.com>
To: Li Zhang <zhlcindy@linux.vnet.ibm.com>
Cc: acme@kernel.org, mingo@redhat.com, sukadev@linux.vnet.ibm.com,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH v3 1/1] perf tools: Check access permission when reading symbol files
Date: Fri, 26 Jun 2015 14:22:29 +0800 [thread overview]
Message-ID: <558CEFA5.4040502@linux.vnet.ibm.com> (raw)
In-Reply-To: <1434704253-2632-1-git-send-email-zhlcindy@linux.vnet.ibm.com>
ping ?
On 2015年06月19日 16:57, Li Zhang wrote:
> There 2 problems when reading symbols files:
>
> * It doesn't report any errors even if when users specify symbol
> files which don't exist with --kallsyms or --vmlinux. The result
> just shows the address without symbols, which is not what is expected.
> So it's better to report errors and exit the program.
>
> * When using command perf report --kallsyms=/proc/kallsyms with a
> non-root user, symbols are resolved. Then select one symbol and
> annotate it, it reports the error as the following:
> Can't annotate __clear_user: No vmlinux file with build id xxx was
> found.
>
> The problem is caused by reading /proc/kcore without access permission.
> /proc/kcore requires CAP_SYS_RAWIO capability to access, so it needs to
> change access permission to allow a specific user to read /proc/kcore or
> use root to execute the perf command.
>
> This patch is to report errors when symbol files specified by users
> don't exist. And check access permission of /proc/kcore when reading it.
>
> Signed-off-by: Li Zhang <zhlcindy@linux.vnet.ibm.com>
> ---
>
> v3 -> v2:
> * Add checking symbol files when user specify these files.
> * Report an error to users when open fails. Suggested by Sukar
>
> v2 -> v1:
> * Report one useful message to users about the access permision,
> then go back to the tools. Suggested by Arnaldo Carvalho de Melo.
>
> tools/perf/builtin-report.c | 11 +++++++++++
> tools/perf/util/symbol.c | 5 ++++-
> 2 files changed, 15 insertions(+), 1 deletion(-)
>
> diff --git a/tools/perf/builtin-report.c b/tools/perf/builtin-report.c
> index 476cdf7..1c353b1 100644
> --- a/tools/perf/builtin-report.c
> +++ b/tools/perf/builtin-report.c
> @@ -731,6 +731,17 @@ int cmd_report(int argc, const char **argv, const char *prefix __maybe_unused)
>
> argc = parse_options(argc, argv, options, report_usage, 0);
>
> + if (symbol_conf.vmlinux_name &&
> + access(symbol_conf.vmlinux_name, R_OK)) {
> + pr_err("Invalid file: %s\n", symbol_conf.vmlinux_name);
> + return -EINVAL;
> + }
> + if (symbol_conf.kallsyms_name &&
> + access(symbol_conf.kallsyms_name, R_OK)) {
> + pr_err("Invalid file: %s\n", symbol_conf.kallsyms_name);
> + return -EINVAL;
> + }
> +
> if (report.use_stdio)
> use_browser = 0;
> else if (report.use_tui)
> diff --git a/tools/perf/util/symbol.c b/tools/perf/util/symbol.c
> index 201f6c4c..46aa93d 100644
> --- a/tools/perf/util/symbol.c
> +++ b/tools/perf/util/symbol.c
> @@ -1126,8 +1126,11 @@ static int dso__load_kcore(struct dso *dso, struct map *map,
> INIT_LIST_HEAD(&md.maps);
>
> fd = open(kcore_filename, O_RDONLY);
> - if (fd < 0)
> + if (fd < 0) {
> + pr_err("%s requires CAP_SYS_RAWIO capability to access.\n",
> + kcore_filename);
> return -EINVAL;
> + }
>
> /* Read new maps into temporary lists */
> err = file__read_maps(fd, md.type == MAP__FUNCTION, kcore_mapfn, &md,
--
Li Zhang
IBM China Linux Technology Centre
next parent reply other threads:[~2015-06-26 6:23 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <1434704253-2632-1-git-send-email-zhlcindy@linux.vnet.ibm.com>
2015-06-26 6:22 ` Li Zhang [this message]
2015-06-26 15:36 ` [PATCH v3 1/1] perf tools: Check access permission when reading symbol files Arnaldo Carvalho de Melo
2015-06-30 4:59 ` [tip:perf/urgent] perf symbols: " tip-bot for Li Zhang
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=558CEFA5.4040502@linux.vnet.ibm.com \
--to=zhlcindy@linux.vnet.ibm.com \
--cc=acme@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=sukadev@linux.vnet.ibm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox