perf/urgent fixes:
. Fix build error on Fedora 12. . Fix to initialize fname always before use it, bug introduced during this merge window, from Masami Hiramatsu. . Disable PERF_RECORD_MMAP2 support, from Stephane Eranian. Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.14 (GNU/Linux) iQIcBAABAgAGBQJSY5N6AAoJENZQFvNTUqpALrMP/ArKFqrfhWBncu1oezl3xb8S ZsXSLscro47XcdIRUY/vBcqLnv8l0fO8lyk1aaUaI5BclGCRrZ9/sLmJmRxSbvSy tr0wet7Lzv2FGPQWJEmNK5uRZ7tvFVQbBs+KFj5hfD5TRKUmj71XJYpJ9xWfxvup XVOKqVZJl+ey/1KUy53tccLtrKi2hrE9uPEpHMri5hoquknGNjQe3MokH9AYtKo8 6Lcm+cHsqKvbbkQwThnmd84qLZ6xwr/cuiteZaQkEe7QZxMSU1ik8ajo4N2v3tw6 f/mkLoyf0K7wDDhEQpHL4BvkhVa7gPFpCj/hgKflXlb+HtCUJJEq6Q6hKlpsv7T9 39Eoq2E8jTvDXyTOj8yXjTuzku1SdU55uZsltX56gAVHqhae8Phf3/RBFAtC1C1u c6nt8/BIjjnluhOfLB/irrHmstS+t3gBAyxC0foveEIyS1AelGgkYx4c36tabp4k lEww3PckiqHozWS/dURYKMvO1vEVLJ8w++9pbp28IIsNNKaWIXpFdhWvI30FIpIH nKk/5V1wx95bbBusIq7yU8WYBujciiPphqXY2+2QGAy1qf2pSdacOTroAZ85zdad 4BU9HJwW9xHuWnVPoaOAohtlkXPPaWeMvGfRnOPArHwCfjqiRs2gjtXaAGRtlJLs CDqtqCm0H8P4o9+1yu6R =QV+5 -----END PGP SIGNATURE----- Merge tag 'perf-urgent-for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/urgent Pull perf/urgent fixes from Arnaldo Carvalho de Melo: " * Fix build error on Fedora 12. * Fix to initialize fname always before use it, bug introduced during this merge window, from Masami Hiramatsu. * Disable PERF_RECORD_MMAP2 support, from Stephane Eranian. " Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> Signed-off-by: Ingo Molnar <mingo@kernel.org>
This commit is contained in:
commit
e4f8eaad70
|
@ -6767,6 +6767,10 @@ static int perf_copy_attr(struct perf_event_attr __user *uattr,
|
||||||
if (ret)
|
if (ret)
|
||||||
return -EFAULT;
|
return -EFAULT;
|
||||||
|
|
||||||
|
/* disabled for now */
|
||||||
|
if (attr->mmap2)
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
if (attr->__reserved_1)
|
if (attr->__reserved_1)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
|
|
|
@ -187,7 +187,7 @@ static int perf_event__synthesize_mmap_events(struct perf_tool *tool,
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
event->header.type = PERF_RECORD_MMAP2;
|
event->header.type = PERF_RECORD_MMAP;
|
||||||
/*
|
/*
|
||||||
* Just like the kernel, see __perf_event_mmap in kernel/perf_event.c
|
* Just like the kernel, see __perf_event_mmap in kernel/perf_event.c
|
||||||
*/
|
*/
|
||||||
|
@ -198,7 +198,6 @@ static int perf_event__synthesize_mmap_events(struct perf_tool *tool,
|
||||||
char prot[5];
|
char prot[5];
|
||||||
char execname[PATH_MAX];
|
char execname[PATH_MAX];
|
||||||
char anonstr[] = "//anon";
|
char anonstr[] = "//anon";
|
||||||
unsigned int ino;
|
|
||||||
size_t size;
|
size_t size;
|
||||||
ssize_t n;
|
ssize_t n;
|
||||||
|
|
||||||
|
@ -209,13 +208,10 @@ static int perf_event__synthesize_mmap_events(struct perf_tool *tool,
|
||||||
strcpy(execname, "");
|
strcpy(execname, "");
|
||||||
|
|
||||||
/* 00400000-0040c000 r-xp 00000000 fd:01 41038 /bin/cat */
|
/* 00400000-0040c000 r-xp 00000000 fd:01 41038 /bin/cat */
|
||||||
n = sscanf(bf, "%"PRIx64"-%"PRIx64" %s %"PRIx64" %x:%x %u %s\n",
|
n = sscanf(bf, "%"PRIx64"-%"PRIx64" %s %"PRIx64" %*x:%*x %*u %s\n",
|
||||||
&event->mmap2.start, &event->mmap2.len, prot,
|
&event->mmap.start, &event->mmap.len, prot,
|
||||||
&event->mmap2.pgoff, &event->mmap2.maj,
|
&event->mmap.pgoff,
|
||||||
&event->mmap2.min,
|
execname);
|
||||||
&ino, execname);
|
|
||||||
|
|
||||||
event->mmap2.ino = (u64)ino;
|
|
||||||
|
|
||||||
if (n != 8)
|
if (n != 8)
|
||||||
continue;
|
continue;
|
||||||
|
@ -227,15 +223,15 @@ static int perf_event__synthesize_mmap_events(struct perf_tool *tool,
|
||||||
strcpy(execname, anonstr);
|
strcpy(execname, anonstr);
|
||||||
|
|
||||||
size = strlen(execname) + 1;
|
size = strlen(execname) + 1;
|
||||||
memcpy(event->mmap2.filename, execname, size);
|
memcpy(event->mmap.filename, execname, size);
|
||||||
size = PERF_ALIGN(size, sizeof(u64));
|
size = PERF_ALIGN(size, sizeof(u64));
|
||||||
event->mmap2.len -= event->mmap.start;
|
event->mmap.len -= event->mmap.start;
|
||||||
event->mmap2.header.size = (sizeof(event->mmap2) -
|
event->mmap.header.size = (sizeof(event->mmap) -
|
||||||
(sizeof(event->mmap2.filename) - size));
|
(sizeof(event->mmap.filename) - size));
|
||||||
memset(event->mmap2.filename + size, 0, machine->id_hdr_size);
|
memset(event->mmap.filename + size, 0, machine->id_hdr_size);
|
||||||
event->mmap2.header.size += machine->id_hdr_size;
|
event->mmap.header.size += machine->id_hdr_size;
|
||||||
event->mmap2.pid = tgid;
|
event->mmap.pid = tgid;
|
||||||
event->mmap2.tid = pid;
|
event->mmap.tid = pid;
|
||||||
|
|
||||||
if (process(tool, event, &synth_sample, machine) != 0) {
|
if (process(tool, event, &synth_sample, machine) != 0) {
|
||||||
rc = -1;
|
rc = -1;
|
||||||
|
|
|
@ -678,7 +678,6 @@ void perf_evsel__config(struct perf_evsel *evsel,
|
||||||
attr->sample_type |= PERF_SAMPLE_WEIGHT;
|
attr->sample_type |= PERF_SAMPLE_WEIGHT;
|
||||||
|
|
||||||
attr->mmap = track;
|
attr->mmap = track;
|
||||||
attr->mmap2 = track && !perf_missing_features.mmap2;
|
|
||||||
attr->comm = track;
|
attr->comm = track;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -1357,10 +1357,10 @@ int debuginfo__find_probe_point(struct debuginfo *self, unsigned long addr,
|
||||||
goto post;
|
goto post;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fname = dwarf_decl_file(&spdie);
|
||||||
if (addr == (unsigned long)baseaddr) {
|
if (addr == (unsigned long)baseaddr) {
|
||||||
/* Function entry - Relative line number is 0 */
|
/* Function entry - Relative line number is 0 */
|
||||||
lineno = baseline;
|
lineno = baseline;
|
||||||
fname = dwarf_decl_file(&spdie);
|
|
||||||
goto post;
|
goto post;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -282,7 +282,7 @@ static void perl_process_tracepoint(union perf_event *perf_event __maybe_unused,
|
||||||
|
|
||||||
event = find_cache_event(evsel);
|
event = find_cache_event(evsel);
|
||||||
if (!event)
|
if (!event)
|
||||||
die("ug! no event found for type %" PRIu64, evsel->attr.config);
|
die("ug! no event found for type %" PRIu64, (u64)evsel->attr.config);
|
||||||
|
|
||||||
pid = raw_field_value(event, "common_pid", data);
|
pid = raw_field_value(event, "common_pid", data);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue