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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.