mirror of
https://source.denx.de/u-boot/u-boot.git
synced 2026-06-02 09:46:37 +03:00
clk: at91: Fix use of unsigned loop index
The use of the unsigned variable 'i' as a loop index leads to the test for i being non-negative always being true. Instead declare 'i' as an int so that the for loop will terminate as expected. If the original for loop completes 'i' will be 1 past the end of the array so decrement it in the subsequent error path to prevent an out of bounds access occurring. This issue was found by Smatch. Signed-off-by: Andrew Goodbody <andrew.goodbody@linaro.org>
This commit is contained in:
committed by
Eugen Hristev
parent
29ea990a1c
commit
da13ce8a6b
@@ -74,8 +74,8 @@ static struct clk *at91_sam9x60_clk_register_td_slck(struct sam9x60_sckc *sckc,
|
||||
int num_parents)
|
||||
{
|
||||
struct clk *clk;
|
||||
int ret = -ENOMEM;
|
||||
u32 val, i;
|
||||
int ret = -ENOMEM, i;
|
||||
u32 val;
|
||||
|
||||
if (!sckc || !name || !parent_names || num_parents != 2)
|
||||
return ERR_PTR(-EINVAL);
|
||||
@@ -99,8 +99,10 @@ static struct clk *at91_sam9x60_clk_register_td_slck(struct sam9x60_sckc *sckc,
|
||||
clk = &sckc->clk;
|
||||
ret = clk_register(clk, UBOOT_DM_CLK_AT91_SAM9X60_TD_SLCK, name,
|
||||
parent_names[val]);
|
||||
if (ret)
|
||||
if (ret) {
|
||||
i--;
|
||||
goto free;
|
||||
}
|
||||
|
||||
return clk;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user