mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2026-09-22 09:34:56 +02:00
of: cpu: add check in __of_find_n_match_cpu_property()
[ Upstream commit5901eda2ed] 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> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
7f10e0f35a
commit
b0dbe5f70e
+1
-1
@@ -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