mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-05 19:31:57 -04:00
perf session: Fix handling when buffer exceeds 2 GiB
[ Upstream commit c17dda8013495d8132c976cbf349be9949d0fbd1 ]
If a user specifies an AUX buffer larger than 2 GiB, the returned size
may exceed 0x80000000. Since the err variable is defined as a signed
32-bit integer, such a value overflows and becomes negative.
As a result, the perf record command reports an error:
0x146e8 [0x30]: failed to process type: 71 [Unknown error 183711232]
Change the type of the err variable to a signed 64-bit integer to
accommodate large buffer sizes correctly.
Fixes: d5652d865e ("perf session: Add ability to skip 4GiB or more")
Reported-by: Tamas Zsoldos <tamas.zsoldos@arm.com>
Signed-off-by: Leo Yan <leo.yan@arm.com>
Acked-by: Namhyung Kim <namhyung@kernel.org>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Ian Rogers <irogers@google.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Link: https://lore.kernel.org/r/20250808-perf_fix_big_buffer_size-v1-1-45f45444a9a4@arm.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
c8a20c9ef7
commit
681e7a933f
1 changed files with 1 additions and 1 deletions
|
|
@ -1504,7 +1504,7 @@ static s64 perf_session__process_user_event(struct perf_session *session,
|
|||
struct perf_tool *tool = session->tool;
|
||||
struct perf_sample sample = { .time = 0, };
|
||||
int fd = perf_data__fd(session->data);
|
||||
int err;
|
||||
s64 err;
|
||||
|
||||
if (event->header.type != PERF_RECORD_COMPRESSED ||
|
||||
tool->compressed == perf_session__process_compressed_event_stub)
|
||||
|
|
|
|||
Loading…
Reference in a new issue