summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tools/perf/util/session.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/tools/perf/util/session.c b/tools/perf/util/session.c
index d5864e380c1b..3f72b80aac56 100644
--- a/tools/perf/util/session.c
+++ b/tools/perf/util/session.c
@@ -1897,7 +1897,14 @@ static s64 perf_session__process_user_event(struct perf_session *session,
err = tool->stat_round(tool, session, event);
break;
case PERF_RECORD_TIME_CONV:
- session->time_conv = event->time_conv;
+ /*
+ * Bounded copy: older kernels emit a shorter struct
+ * without time_cycles/time_mask/cap_user_time_*.
+ * Zero the rest so extended fields default to off.
+ */
+ memset(&session->time_conv, 0, sizeof(session->time_conv));
+ memcpy(&session->time_conv, &event->time_conv,
+ min((size_t)event->header.size, sizeof(session->time_conv)));
err = tool->time_conv(tool, session, event);
break;
case PERF_RECORD_HEADER_FEATURE: