On Thu, Nov 12, 2015 at 11:49 AM, Arnaldo Carvalho de Melo <arnaldo.m...@gmail.com> wrote: > Em Thu, Nov 12, 2015 at 04:04:44PM -0300, Arnaldo Carvalho de Melo escreveu: >> Em Thu, Nov 12, 2015 at 10:59:36AM -0800, Brendan Gregg escreveu: >> > On Thu, Nov 12, 2015 at 10:52 AM, Arnaldo Carvalho de Melo >> > <arnaldo.m...@gmail.com> wrote: >> > > Em Thu, Nov 12, 2015 at 10:27:26AM -0800, Brendan Gregg escreveu: >> > >> G'Day, >> > >> >> > >> # perf record -F 99 -a -g -- sleep 30 >> > >> [...] >> > >> # perf report -n --stdio >> > >> File /tmp/perf-25958.map not owned by current user or root, ignoring it. >> > >> >> > >> Can root bypass this test? I'm root, and profiling apps from different >> > > >> > > In other places such tests are overridable via '-f' (force), this one >> > > should too, I think. >> > > >> > > # perf report >> > > File perf.data not owned by current user or root (use -f to override) >> > > [root@zoo linux]# ls -la perf.data >> > > -rw-------. 1 acme acme 20032 Nov 12 15:50 perf.data >> > >> > Yes, a -f option would work too... >> >> Cooking up a patch right now. > > This way it gets consistent with the other checks, please let me know if > I can have your Tested-by, checking other places where this check is > done to make it follow this rule too.
Tested, it works, thanks! Brendan > > - Arnaldo > > diff --git a/tools/perf/builtin-report.c b/tools/perf/builtin-report.c > index 2853ad2bd435..f256fac1e722 100644 > --- a/tools/perf/builtin-report.c > +++ b/tools/perf/builtin-report.c > @@ -44,7 +44,7 @@ > struct report { > struct perf_tool tool; > struct perf_session *session; > - bool force, use_tui, use_gtk, use_stdio; > + bool use_tui, use_gtk, use_stdio; > bool hide_unresolved; > bool dont_use_callchains; > bool show_full_info; > @@ -678,7 +678,7 @@ int cmd_report(int argc, const char **argv, const char > *prefix __maybe_unused) > "file", "vmlinux pathname"), > OPT_STRING(0, "kallsyms", &symbol_conf.kallsyms_name, > "file", "kallsyms pathname"), > - OPT_BOOLEAN('f', "force", &report.force, "don't complain, do it"), > + OPT_BOOLEAN('f', "force", &symbol_conf.force, "don't complain, do > it"), > OPT_BOOLEAN('m', "modules", &symbol_conf.use_modules, > "load module symbols - WARNING: use only with -k and LIVE > kernel"), > OPT_BOOLEAN('n', "show-nr-samples", &symbol_conf.show_nr_samples, > @@ -832,7 +832,7 @@ int cmd_report(int argc, const char **argv, const char > *prefix __maybe_unused) > } > > file.path = input_name; > - file.force = report.force; > + file.force = symbol_conf.force; > > repeat: > session = perf_session__new(&file, false, &report.tool); > diff --git a/tools/perf/util/symbol.c b/tools/perf/util/symbol.c > index 09343a880c0b..cd08027a6d2c 100644 > --- a/tools/perf/util/symbol.c > +++ b/tools/perf/util/symbol.c > @@ -1436,9 +1436,9 @@ int dso__load(struct dso *dso, struct map *map, > symbol_filter_t filter) > if (lstat(dso->name, &st) < 0) > goto out; > > - if (st.st_uid && (st.st_uid != geteuid())) { > + if (!symbol_conf.force && st.st_uid && (st.st_uid != > geteuid())) { > pr_warning("File %s not owned by current user or > root, " > - "ignoring it.\n", dso->name); > + "ignoring it (use -f to override).\n", > dso->name); > goto out; > } > > diff --git a/tools/perf/util/symbol.h b/tools/perf/util/symbol.h > index 40073c60b83d..dcd786e364f2 100644 > --- a/tools/perf/util/symbol.h > +++ b/tools/perf/util/symbol.h > @@ -84,6 +84,7 @@ struct symbol_conf { > unsigned short priv_size; > unsigned short nr_events; > bool try_vmlinux_path, > + force, > ignore_vmlinux, > ignore_vmlinux_buildid, > show_kernel_path, -- To unsubscribe from this list: send the line "unsubscribe linux-perf-users" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html