mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-07-22 01:08:13 -04:00
of: cpu: add check in __of_find_n_match_cpu_property()
In __of_find_n_match_cpu_property(), checking the variable ac for 0 won't
prevent a possible overflow when multiplying it by sizeof(*cell). Besides,
of_read_number() (called in the *for* loop) can't return correct result if
that variable (which equals the #address-cells prop's value) exceeds 2, so
additionally checking for that seems logical...
Found by Linux Verification Center (linuxtesting.org) with the Svace static
analysis tool.
Fixes: f3cea45a77 ("of: Fix iteration bug over CPU reg properties")
Signed-off-by: Sergey Shtylyov <s.shtylyov@auroraos.dev>
Link: https://patch.msgid.link/0c7bf7e9-887c-42d5-bcfb-0ba7fe1e70b6@auroraos.dev
Signed-off-by: Rob Herring (Arm) <robh@kernel.org>
This commit is contained in:
committed by
Rob Herring (Arm)
parent
72765c8917
commit
5901eda2ed
@@ -60,7 +60,7 @@ static bool __of_find_n_match_cpu_property(struct device_node *cpun,
|
||||
cell = of_get_property(cpun, prop_name, &prop_len);
|
||||
if (!cell && !ac && arch_match_cpu_phys_id(cpu, 0))
|
||||
return true;
|
||||
if (!cell || !ac)
|
||||
if (!cell || !ac || ac > 2)
|
||||
return false;
|
||||
prop_len /= sizeof(*cell) * ac;
|
||||
for (tid = 0; tid < prop_len; tid++) {
|
||||
|
||||
Reference in New Issue
Block a user