diff options
Diffstat (limited to 'tools/perf')
| -rw-r--r-- | tools/perf/Documentation/Makefile | 2 | ||||
| -rw-r--r-- | tools/perf/Documentation/examples.txt (renamed from tools/perf/Documentation/perf-examples.txt) | 0 | ||||
| -rw-r--r-- | tools/perf/builtin-annotate.c | 14 | ||||
| -rw-r--r-- | tools/perf/builtin-record.c | 2 | ||||
| -rw-r--r-- | tools/perf/builtin-report.c | 7 |
5 files changed, 23 insertions, 2 deletions
diff --git a/tools/perf/Documentation/Makefile b/tools/perf/Documentation/Makefile index 5457192e1b41..bdd3b7ecad0a 100644 --- a/tools/perf/Documentation/Makefile +++ b/tools/perf/Documentation/Makefile | |||
| @@ -35,7 +35,7 @@ man7dir=$(mandir)/man7 | |||
| 35 | # DESTDIR= | 35 | # DESTDIR= |
| 36 | 36 | ||
| 37 | ASCIIDOC=asciidoc | 37 | ASCIIDOC=asciidoc |
| 38 | ASCIIDOC_EXTRA = | 38 | ASCIIDOC_EXTRA = --unsafe |
| 39 | MANPAGE_XSL = manpage-normal.xsl | 39 | MANPAGE_XSL = manpage-normal.xsl |
| 40 | XMLTO_EXTRA = | 40 | XMLTO_EXTRA = |
| 41 | INSTALL?=install | 41 | INSTALL?=install |
diff --git a/tools/perf/Documentation/perf-examples.txt b/tools/perf/Documentation/examples.txt index 8eb6c489fb15..8eb6c489fb15 100644 --- a/tools/perf/Documentation/perf-examples.txt +++ b/tools/perf/Documentation/examples.txt | |||
diff --git a/tools/perf/builtin-annotate.c b/tools/perf/builtin-annotate.c index 1dba568e1941..5e17de984dc8 100644 --- a/tools/perf/builtin-annotate.c +++ b/tools/perf/builtin-annotate.c | |||
| @@ -31,6 +31,7 @@ static char *vmlinux = "vmlinux"; | |||
| 31 | static char default_sort_order[] = "comm,symbol"; | 31 | static char default_sort_order[] = "comm,symbol"; |
| 32 | static char *sort_order = default_sort_order; | 32 | static char *sort_order = default_sort_order; |
| 33 | 33 | ||
| 34 | static int force; | ||
| 34 | static int input; | 35 | static int input; |
| 35 | static int show_mask = SHOW_KERNEL | SHOW_USER | SHOW_HV; | 36 | static int show_mask = SHOW_KERNEL | SHOW_USER | SHOW_HV; |
| 36 | 37 | ||
| @@ -980,6 +981,13 @@ process_fork_event(event_t *event, unsigned long offset, unsigned long head) | |||
| 980 | (void *)(long)(event->header.size), | 981 | (void *)(long)(event->header.size), |
| 981 | event->fork.pid, event->fork.ppid); | 982 | event->fork.pid, event->fork.ppid); |
| 982 | 983 | ||
| 984 | /* | ||
| 985 | * A thread clone will have the same PID for both | ||
| 986 | * parent and child. | ||
| 987 | */ | ||
| 988 | if (thread == parent) | ||
| 989 | return 0; | ||
| 990 | |||
| 983 | if (!thread || !parent || thread__fork(thread, parent)) { | 991 | if (!thread || !parent || thread__fork(thread, parent)) { |
| 984 | dprintf("problem processing PERF_EVENT_FORK, skipping event.\n"); | 992 | dprintf("problem processing PERF_EVENT_FORK, skipping event.\n"); |
| 985 | return -1; | 993 | return -1; |
| @@ -1327,6 +1335,11 @@ static int __cmd_annotate(void) | |||
| 1327 | exit(-1); | 1335 | exit(-1); |
| 1328 | } | 1336 | } |
| 1329 | 1337 | ||
| 1338 | if (!force && (stat.st_uid != geteuid())) { | ||
| 1339 | fprintf(stderr, "file: %s not owned by current user\n", input_name); | ||
| 1340 | exit(-1); | ||
| 1341 | } | ||
| 1342 | |||
| 1330 | if (!stat.st_size) { | 1343 | if (!stat.st_size) { |
| 1331 | fprintf(stderr, "zero-sized file, nothing to do!\n"); | 1344 | fprintf(stderr, "zero-sized file, nothing to do!\n"); |
| 1332 | exit(0); | 1345 | exit(0); |
| @@ -1432,6 +1445,7 @@ static const struct option options[] = { | |||
| 1432 | "input file name"), | 1445 | "input file name"), |
| 1433 | OPT_STRING('s', "symbol", &sym_hist_filter, "symbol", | 1446 | OPT_STRING('s', "symbol", &sym_hist_filter, "symbol", |
| 1434 | "symbol to annotate"), | 1447 | "symbol to annotate"), |
| 1448 | OPT_BOOLEAN('f', "force", &force, "don't complain, do it"), | ||
| 1435 | OPT_BOOLEAN('v', "verbose", &verbose, | 1449 | OPT_BOOLEAN('v', "verbose", &verbose, |
| 1436 | "be more verbose (show symbol address, etc)"), | 1450 | "be more verbose (show symbol address, etc)"), |
| 1437 | OPT_BOOLEAN('D', "dump-raw-trace", &dump_trace, | 1451 | OPT_BOOLEAN('D', "dump-raw-trace", &dump_trace, |
diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c index 3d051b9cf25f..89a5ddcd1ded 100644 --- a/tools/perf/builtin-record.c +++ b/tools/perf/builtin-record.c | |||
| @@ -219,7 +219,7 @@ static pid_t pid_synthesize_comm_event(pid_t pid, int full) | |||
| 219 | snprintf(filename, sizeof(filename), "/proc/%d/status", pid); | 219 | snprintf(filename, sizeof(filename), "/proc/%d/status", pid); |
| 220 | 220 | ||
| 221 | fp = fopen(filename, "r"); | 221 | fp = fopen(filename, "r"); |
| 222 | if (fd == NULL) { | 222 | if (fp == NULL) { |
| 223 | /* | 223 | /* |
| 224 | * We raced with a task exiting - just return: | 224 | * We raced with a task exiting - just return: |
| 225 | */ | 225 | */ |
diff --git a/tools/perf/builtin-report.c b/tools/perf/builtin-report.c index b53a60fc12de..8b2ec882e6e0 100644 --- a/tools/perf/builtin-report.c +++ b/tools/perf/builtin-report.c | |||
| @@ -38,6 +38,7 @@ static char *dso_list_str, *comm_list_str, *sym_list_str, | |||
| 38 | static struct strlist *dso_list, *comm_list, *sym_list; | 38 | static struct strlist *dso_list, *comm_list, *sym_list; |
| 39 | static char *field_sep; | 39 | static char *field_sep; |
| 40 | 40 | ||
| 41 | static int force; | ||
| 41 | static int input; | 42 | static int input; |
| 42 | static int show_mask = SHOW_KERNEL | SHOW_USER | SHOW_HV; | 43 | static int show_mask = SHOW_KERNEL | SHOW_USER | SHOW_HV; |
| 43 | 44 | ||
| @@ -1856,6 +1857,11 @@ static int __cmd_report(void) | |||
| 1856 | exit(-1); | 1857 | exit(-1); |
| 1857 | } | 1858 | } |
| 1858 | 1859 | ||
| 1860 | if (!force && (stat.st_uid != geteuid())) { | ||
| 1861 | fprintf(stderr, "file: %s not owned by current user\n", input_name); | ||
| 1862 | exit(-1); | ||
| 1863 | } | ||
| 1864 | |||
| 1859 | if (!stat.st_size) { | 1865 | if (!stat.st_size) { |
| 1860 | fprintf(stderr, "zero-sized file, nothing to do!\n"); | 1866 | fprintf(stderr, "zero-sized file, nothing to do!\n"); |
| 1861 | exit(0); | 1867 | exit(0); |
| @@ -2064,6 +2070,7 @@ static const struct option options[] = { | |||
| 2064 | OPT_BOOLEAN('D', "dump-raw-trace", &dump_trace, | 2070 | OPT_BOOLEAN('D', "dump-raw-trace", &dump_trace, |
| 2065 | "dump raw trace in ASCII"), | 2071 | "dump raw trace in ASCII"), |
| 2066 | OPT_STRING('k', "vmlinux", &vmlinux, "file", "vmlinux pathname"), | 2072 | OPT_STRING('k', "vmlinux", &vmlinux, "file", "vmlinux pathname"), |
| 2073 | OPT_BOOLEAN('f', "force", &force, "don't complain, do it"), | ||
| 2067 | OPT_BOOLEAN('m', "modules", &modules, | 2074 | OPT_BOOLEAN('m', "modules", &modules, |
| 2068 | "load module symbols - WARNING: use only with -k and LIVE kernel"), | 2075 | "load module symbols - WARNING: use only with -k and LIVE kernel"), |
| 2069 | OPT_BOOLEAN('n', "show-nr-samples", &show_nr_samples, | 2076 | OPT_BOOLEAN('n', "show-nr-samples", &show_nr_samples, |
