]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
perf build-id: Reduce size of "size" variable
authorIan Rogers <irogers@google.com>
Thu, 24 Jul 2025 16:32:41 +0000 (09:32 -0700)
committerNamhyung Kim <namhyung@kernel.org>
Thu, 24 Jul 2025 20:50:17 +0000 (13:50 -0700)
Later clean up of the dso_id to include a build_id will suffer from
alignment and size issues. The size can only hold up to a value of
BUILD_ID_SIZE (20) and the mmap2 event uses a byte for the value.

Signed-off-by: Ian Rogers <irogers@google.com>
Link: https://lore.kernel.org/r/20250724163302.596743-2-irogers@google.com
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
tools/perf/util/build-id.h
tools/perf/util/synthetic-events.c

index a212497bfdb0a56e9424f847e5769e33bf54fac8..e3e0a446ff0c827b8694a621233c386e87e341ee 100644 (file)
@@ -13,7 +13,7 @@
 
 struct build_id {
        u8      data[BUILD_ID_SIZE];
-       size_t  size;
+       u8      size;
 };
 
 struct dso;
index 7c00b09e3a9362ec6171eb6dc7df41d5b383cbac..d3c4541746020b141a910ff61cdd77edaad31a90 100644 (file)
@@ -2248,7 +2248,9 @@ int perf_event__synthesize_build_id(const struct perf_tool *tool,
 
        memset(&ev, 0, len);
 
-       ev.build_id.size = min(bid->size, sizeof(ev.build_id.build_id));
+       ev.build_id.size = bid->size;
+       if (ev.build_id.size > sizeof(ev.build_id.build_id))
+               ev.build_id.size = sizeof(ev.build_id.build_id);
        memcpy(ev.build_id.build_id, bid->data, ev.build_id.size);
        ev.build_id.header.type = PERF_RECORD_HEADER_BUILD_ID;
        ev.build_id.header.misc = misc | PERF_RECORD_MISC_BUILD_ID_SIZE;
@@ -2308,7 +2310,9 @@ int perf_event__synthesize_mmap2_build_id(const struct perf_tool *tool,
        ev.mmap2.len = len;
        ev.mmap2.pgoff = pgoff;
 
-       ev.mmap2.build_id_size = min(bid->size, sizeof(ev.mmap2.build_id));
+       ev.mmap2.build_id_size = bid->size;
+       if (ev.mmap2.build_id_size > sizeof(ev.mmap2.build_id))
+               ev.build_id.size = sizeof(ev.mmap2.build_id);
        memcpy(ev.mmap2.build_id, bid->data, ev.mmap2.build_id_size);
 
        ev.mmap2.prot = prot;