perf session: Fix swapping of cpu_map and stat_config records
'data' field in perf_record_cpu_map_data struct is 16-bit wide and so should be swapped using bswap_16(). 'nr' field in perf_record_stat_config struct should be swapped before being used for size calculation. Signed-off-by: Dmitry Koshelev <karaghiozis@gmail.com> Acked-by: Jiri Olsa <jolsa@redhat.com> Cc: Adrian Hunter <adrian.hunter@intel.com> Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> Cc: Kan Liang <kan.liang@linux.intel.com> Cc: Leo Yan <leo.yan@linaro.org> Cc: Mark Rutland <mark.rutland@arm.com> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Peter Zijlstra <peterz@infradead.org> Link: http://lore.kernel.org/lkml/20210506131244.13328-1-karaghiozis@gmail.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
7aa3c9eabd
commit
a11c9a6e47
@ -904,7 +904,7 @@ static void perf_event__cpu_map_swap(union perf_event *event,
|
||||
struct perf_record_record_cpu_map *mask;
|
||||
unsigned i;
|
||||
|
||||
data->type = bswap_64(data->type);
|
||||
data->type = bswap_16(data->type);
|
||||
|
||||
switch (data->type) {
|
||||
case PERF_CPU_MAP__CPUS:
|
||||
@ -937,7 +937,7 @@ static void perf_event__stat_config_swap(union perf_event *event,
|
||||
{
|
||||
u64 size;
|
||||
|
||||
size = event->stat_config.nr * sizeof(event->stat_config.data[0]);
|
||||
size = bswap_64(event->stat_config.nr) * sizeof(event->stat_config.data[0]);
|
||||
size += 1; /* nr item itself */
|
||||
mem_bswap_64(&event->stat_config.nr, size);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user