perf build-id: Reduce size of "size" variable

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>
This commit is contained in:
Ian Rogers 2025-07-24 09:32:41 -07:00 committed by Namhyung Kim
parent fcc7cc3123
commit f3982385bc
2 changed files with 7 additions and 3 deletions

View File

@ -13,7 +13,7 @@
struct build_id {
u8 data[BUILD_ID_SIZE];
size_t size;
u8 size;
};
struct dso;

View 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;