The size of the resulting cpu map can be smaller than a multiple
of sizeof(u64), resulting in SIGBUS on cpus like Sparc as the
next event will not be aligned properly.

Fixes: 6c872901af07 ("perf cpu_map: Add cpu_map event synthesize function")
Signed-off-by: David S. Miller <da...@davemloft.net>

diff --git a/tools/perf/util/event.c b/tools/perf/util/event.c
index 0cd42150f712..0988eb3b844b 100644
--- a/tools/perf/util/event.c
+++ b/tools/perf/util/event.c
@@ -1081,6 +1081,7 @@ void *cpu_map_data__alloc(struct cpu_map *map, size_t 
*size, u16 *type, int *max
        }
 
        *size += sizeof(struct cpu_map_data);
+       *size = PERF_ALIGN(*size, sizeof(u64));
        return zalloc(*size);
 }
 

Reply via email to