mirror of
https://github.com/torvalds/linux.git
synced 2026-05-22 14:12:07 +02:00
perf/urgent fixes:
- In some cases where perf_event.fork.{pid,tid} should be used we were instead
using perf_event.comm.{pid,tid}, which is not a problem for for the 'pid'
case, that sits in the same place in these union_perf_event members, but
comm.tid sits where fork.ppid is, oops.
These cases were considered as (potentially) problematic:
- 'perf script' with !sample_id_all, i.e. only non old kernels without
perf_event_attr.sample_id_all.
- intel_pt could be affected when decoding without timestamps, as the exit
event is only used to flush out data which anyway gets flushed at the
end of the session.
- intel_bts also uses the exit event to flush data which would probably not
cause errors as it would get flushed at the end of the session instead.
Fix it. (Adrian Hunter)
- Due to relaxing the compiler checks for bison generated files, we missed
updating one parse_events_add_pmu() caller when this function had its
prototype changed, fix it. (Jiri Olsa)
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1
iQIcBAABAgAGBQJV6G54AAoJENZQFvNTUqpAQT4P/Rx3mWgqhy1oDbIEaOMrewmH
Udtltd9q8HAkLqMOHgR9ilwnUNeB2gw/uFdPdDaBCj3ACPKpoWnXrwU+buOultUO
IwPZGt5WiPGHxJ7vE6sSR3v8M0loFtezJO6vlU9q0B+jtxn6XoyHXboVzekUVpwY
Q7iYLX9ntOTG81nuk2c8rTf6lI4m+pSYOMGjLqDCB6cE4DMavUIzaLPIoSTEO1Ut
V5IDwn9sfy2OElLXrN+QCZJn8qTy5WydRHFeUDYsA3ABUukEksygV+oePNomd1wH
imYlatETRJX1GeN4fsYeR2pqa3du3Q20yMei00oVsxAwu02VUDUxbq8mvCoaQr6s
r4dltN9iv6ByG5uyQ168ZVRXDyf+TxTqm3365JY5w6eFwJBKW2zDMtMf+hPC7B0P
IqfAYNbQSM60npPzQEOmu0fp/Tr9fYHzJmg+ycigLILsgL0ZN7abK86kIkkkDbSY
6M/aEAC9CxKL/wnyTGx6itovEEuRYOoshvWfAb0Hfqa9eWjAXu2GxsGHkCE4tZuf
zMZihqdA5gW4QJJ5rUrV3OPgHTl1WQRIq0mwp2kijS7AQ72egDKJ48TE89W1115v
Uw/FqhuiTVHEyT3/eFZ6f03K3Zyg+O8tF6bGoIxYrZ058QJRHcvzVCupWeZx4tki
Z6SdKCs6atywgG3hTU1B
=M0yL
-----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:
- In some cases where perf_event.fork.{pid,tid} should be used we were instead
using perf_event.comm.{pid,tid}, which is not a problem for for the 'pid'
case, that sits in the same place in these union_perf_event members, but
comm.tid sits where fork.ppid is, oops.
These cases were considered as (potentially) problematic:
- 'perf script' with !sample_id_all, i.e. only non old kernels without
perf_event_attr.sample_id_all.
- intel_pt could be affected when decoding without timestamps, as the exit
event is only used to flush out data which anyway gets flushed at the
end of the session.
- intel_bts also uses the exit event to flush data which would probably not
cause errors as it would get flushed at the end of the session instead.
Fix it. (Adrian Hunter)
- Due to relaxing the compiler checks for bison generated files, we missed
updating one parse_events_add_pmu() caller when this function had its
prototype changed, fix it. (Jiri Olsa)
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
This commit is contained in:
commit
21adf76e90
|
|
@ -768,8 +768,8 @@ static int process_exit_event(struct perf_tool *tool,
|
|||
if (!evsel->attr.sample_id_all) {
|
||||
sample->cpu = 0;
|
||||
sample->time = 0;
|
||||
sample->tid = event->comm.tid;
|
||||
sample->pid = event->comm.pid;
|
||||
sample->tid = event->fork.tid;
|
||||
sample->pid = event->fork.pid;
|
||||
}
|
||||
print_sample_start(sample, thread, evsel);
|
||||
perf_event__fprintf(event, stdout);
|
||||
|
|
|
|||
|
|
@ -623,7 +623,7 @@ static int intel_bts_process_event(struct perf_session *session,
|
|||
if (err)
|
||||
return err;
|
||||
if (event->header.type == PERF_RECORD_EXIT) {
|
||||
err = intel_bts_process_tid_exit(bts, event->comm.tid);
|
||||
err = intel_bts_process_tid_exit(bts, event->fork.tid);
|
||||
if (err)
|
||||
return err;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1494,7 +1494,7 @@ static int intel_pt_process_event(struct perf_session *session,
|
|||
if (pt->timeless_decoding) {
|
||||
if (event->header.type == PERF_RECORD_EXIT) {
|
||||
err = intel_pt_process_timeless_queues(pt,
|
||||
event->comm.tid,
|
||||
event->fork.tid,
|
||||
sample->time);
|
||||
}
|
||||
} else if (timestamp) {
|
||||
|
|
|
|||
|
|
@ -255,7 +255,7 @@ PE_PMU_EVENT_PRE '-' PE_PMU_EVENT_SUF sep_dc
|
|||
list_add_tail(&term->list, head);
|
||||
|
||||
ALLOC_LIST(list);
|
||||
ABORT_ON(parse_events_add_pmu(list, &data->idx, "cpu", head));
|
||||
ABORT_ON(parse_events_add_pmu(data, list, "cpu", head));
|
||||
parse_events__free_terms(head);
|
||||
$$ = list;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user