mirror of
https://github.com/torvalds/linux.git
synced 2026-07-27 17:47:41 +02:00
perf tools: Fix get_max_num() size_t underflow on empty sysfs file
get_max_num() reads a sysfs file (cpu/possible, cpu/present, or
node/possible) and scans backward from the end to find the last
number. If the file is empty, filename__read_str() returns num == 0.
The loop `while (--num)` decrements the size_t from 0 to SIZE_MAX,
reading backward across the heap until a comma or hyphen is found
or unmapped memory is hit.
Add an early return for empty files before the backward scan.
Fixes: 7780c25bae ("perf tools: Allow ability to map cpus to nodes easily")
Reported-by: sashiko-bot <sashiko-bot@kernel.org>
Reviewed-by: Ian Rogers <irogers@google.com>
Cc: Don Zickus <dzickus@redhat.com>
Cc: Ian Rogers <irogers@google.com>
Assisted-by: Claude:claude-opus-4.6
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
f54ce06049
commit
0a012113bb
|
|
@ -448,6 +448,12 @@ static int get_max_num(char *path, int *max)
|
|||
|
||||
buf[num] = '\0';
|
||||
|
||||
/* empty file — nothing to parse */
|
||||
if (num == 0) {
|
||||
err = -1;
|
||||
goto out;
|
||||
}
|
||||
|
||||
/* start on the right, to find highest node num */
|
||||
while (--num) {
|
||||
if ((buf[num] == ',') || (buf[num] == '-')) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user