diff --git a/tools/perf/util/session.c b/tools/perf/util/session.c index b17f1c9bc9651d620810825ab6014663890006f7..bad5f87ae001b06427f04aed3db5b6501ab90b31 100644 --- a/tools/perf/util/session.c +++ b/tools/perf/util/session.c @@ -1928,12 +1928,14 @@ reader__process_events(struct reader *rd, struct perf_session *session, size = event->header.size; + skip = -EINVAL; + if (size < sizeof(struct perf_event_header) || (skip = rd->process(session, event, file_pos)) < 0) { - pr_err("%#" PRIx64 " [%#x]: failed to process type: %d\n", + pr_err("%#" PRIx64 " [%#x]: failed to process type: %d [%s]\n", file_offset + head, event->header.size, - event->header.type); - err = -EINVAL; + event->header.type, strerror(-skip)); + err = skip; goto out; }