Message ID | 20240919122905.14026-1-amishin@t-argos.ru (mailing list archive) |
---|---|
State | Under Review |
Headers | show |
Series | [v2] clk: si5341: Adjust rate rounding in si5341_output_clk_determine_rate() | expand |
diff --git a/drivers/clk/clk-si5341.c b/drivers/clk/clk-si5341.c index 6e8dd7387cfd..278fb341d3d7 100644 --- a/drivers/clk/clk-si5341.c +++ b/drivers/clk/clk-si5341.c @@ -855,7 +855,7 @@ static int si5341_output_clk_determine_rate(struct clk_hw *hw, } else { /* We cannot change our parent's rate, report what we can do */ r /= rate; - rate = req->best_parent_rate / (r << 1); + rate = r ? req->best_parent_rate / (r << 1) : req->best_parent_rate; } req->rate = rate;
In si5341_output_clk_determine_rate() division by zero is possible if the following conditions are met: - rate > (parent_rate / 2); - (parent_rate / 2) is not multiple of rate; - CLK_SET_RATE_PARENT flag is not set. Add zero value check and provide a higher rate in such case. Found by Linux Verification Center (linuxtesting.org) with SVACE. Fixes: 3044a860fd09 ("clk: Add Si5341/Si5340 driver") Suggested-by: Stephen Boyd <sboyd@kernel.org> Signed-off-by: Aleksandr Mishin <amishin@t-argos.ru> --- v1->v2: Update "Fixes" tag, in case of possible division by zero provide a higher rate as suggested by Stephen drivers/clk/clk-si5341.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)