On 4/9/25 3:29 PM, Purva Yeshi wrote:
Fix Smatch-detected error:
drivers/iio/addac/ad74115.c:823 _ad74115_get_adc_code() error:
uninitialized symbol 'rate'.
The variable rate was declared but not given any value before being used
in a division. If the code reached that point without setting rate, it
would cause unpredictable behavior.
Declare and initialize 'rate' to zero inside the 'else' block where it is
used. This ensures 'rate' is always initialized before being passed to
DIV_ROUND_CLOSEST.
Signed-off-by: Purva Yeshi <purvayeshi550@xxxxxxxxx>
---
drivers/iio/addac/ad74115.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/iio/addac/ad74115.c b/drivers/iio/addac/ad74115.c
index a7e480f2472d..26770c68e5fa 100644
--- a/drivers/iio/addac/ad74115.c
+++ b/drivers/iio/addac/ad74115.c
@@ -814,7 +814,7 @@ static int _ad74115_get_adc_code(struct ad74115_state *st,
return -ETIMEDOUT;
} else {
unsigned int regval, wait_time;
- int rate;
+ int rate = 0;
ret = ad74115_get_adc_rate(st, channel, &rate);
if (ret < 0)
I don't see how rate could be used uninitialized since we are
returning the error if ad74115_get_adc_rate() fails.
Also, initializing to 0 would then cause a divide by 0 error
if that value was actually used later in the code.