]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
ASoC: stm: stm32_i2s: Fix calc_clk_div() error handling in determine_rate()
authorSergio Perez Gonzalez <sperezglz@gmail.com>
Tue, 29 Jul 2025 02:00:49 +0000 (20:00 -0600)
committerMark Brown <broonie@kernel.org>
Tue, 12 Aug 2025 20:15:29 +0000 (21:15 +0100)
calc_clk_div() will only return a non-zero value (-EINVAL)
in case of error. On the other hand, req->rate is an unsigned long.
It seems quite odd that req->rate would be assigned a negative value,
which is clearly not a rate, and success would be returned.

Reinstate previous logic, which would just return error.

Fixes: afd529d74002 ("ASoC: stm: stm32_i2s: convert from round_rate() to determine_rate()")
Link: https://scan7.scan.coverity.com/#/project-view/53936/11354?selectedIssue=1647702
Signed-off-by: Sergio Perez Gonzalez <sperezglz@gmail.com>
Link: https://patch.msgid.link/20250729020052.404617-1-sperezglz@gmail.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/stm/stm32_i2s.c

index 0e489097d9c1086efcd9e3d1013acffeb0a46d4a..6ca21780f21d42d677ea5645d646d6fa8fb1fd99 100644 (file)
@@ -469,11 +469,8 @@ static int stm32_i2smclk_determine_rate(struct clk_hw *hw,
        int ret;
 
        ret = stm32_i2s_calc_clk_div(i2s, req->best_parent_rate, req->rate);
-       if (ret) {
-               req->rate = ret;
-
-               return 0;
-       }
+       if (ret)
+               return ret;
 
        mclk->freq = req->best_parent_rate / i2s->divider;