mirror of
https://github.com/torvalds/linux.git
synced 2026-09-24 06:24:02 +02:00
clk: scpi: bound-check DVFS index in scpi_dvfs_recalc_rate
dvfs_get_idx() may return an out-of-range index if the SCP firmware is
buggy or returns a stale value. Only negative indexes were rejected, so a
large index walked past info->opps and could treat garbage as a clock rate
(KASAN OOB / wrong frequency to consumers). The missing upper bound dates
back to the original SCPI clock driver.
Treat indexes >= opp count as invalid and return 0, same as idx < 0.
Fixes: cd52c2a4b5 ("clk: add support for clocks provided by SCP(System Control Processor)")
Signed-off-by: Xixin Liu <liuxixin@kylinos.cn>
Link: https://patch.msgid.link/04f9ab766e07.v2.1785200642.git.liuxixin@kylinos.cn
Signed-off-by: Sudeep Holla <sudeep.holla@kernel.org>
This commit is contained in:
parent
32471d84a4
commit
70f4b78d56
|
|
@ -73,7 +73,7 @@ static unsigned long scpi_dvfs_recalc_rate(struct clk_hw *hw,
|
|||
int idx = clk->scpi_ops->dvfs_get_idx(clk->id);
|
||||
const struct scpi_opp *opp;
|
||||
|
||||
if (idx < 0)
|
||||
if (idx < 0 || idx >= clk->info->count)
|
||||
return 0;
|
||||
|
||||
opp = clk->info->opps + idx;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user