mirror of
https://github.com/torvalds/linux.git
synced 2026-06-04 12:35:52 +02:00
perf header: Do validation of perf.data HEADER_CPU_DOMAIN_INFO
As suggested in an unrelated sashiko review: https://sashiko.dev/#/patchset/20260407195145.2372104-1-acme%40kernel.org " Could a malformed perf.data file provide out-of-bounds values for cpu and domain? These variables are read directly from the file and used as indices for cd_map and cd_map[cpu]->domains without any validation against env->nr_cpus_avail or max_sched_domains. Similar to the issue above, this is an existing lack of validation that becomes apparent when looking at the allocation boundaries. " Validate it. Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> Signed-off-by: Namhyung Kim <namhyung@kernel.org>
This commit is contained in:
parent
fc32ae6df8
commit
7507abd16a
|
|
@ -3717,6 +3717,11 @@ static int process_cpu_domain_info(struct feat_fd *ff, void *data __maybe_unused
|
|||
if (do_read_u32(ff, &cpu))
|
||||
return -1;
|
||||
|
||||
if (cpu >= nra) {
|
||||
pr_err("Invalid HEADER_CPU_DOMAIN_INFO: cpu %d >= nr_cpus_avail (%d)\n", cpu, nra);
|
||||
return -1;
|
||||
}
|
||||
|
||||
cd_map[cpu] = zalloc(sizeof(*cd_map[cpu]));
|
||||
if (!cd_map[cpu])
|
||||
return -1;
|
||||
|
|
@ -3736,6 +3741,12 @@ static int process_cpu_domain_info(struct feat_fd *ff, void *data __maybe_unused
|
|||
if (do_read_u32(ff, &domain))
|
||||
return -1;
|
||||
|
||||
if (domain >= max_sched_domains) {
|
||||
pr_err("Invalid HEADER_CPU_DOMAIN_INFO: domain %d >= max_sched_domains (%d)\n",
|
||||
domain, max_sched_domains);
|
||||
return -1;
|
||||
}
|
||||
|
||||
d_info = zalloc(sizeof(*d_info));
|
||||
if (!d_info)
|
||||
return -1;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user