iio: adc: ad_sigma_delta: Fix use of uninitialized status_pos
authorPurva Yeshi <purvayeshi550@gmail.com>
Thu, 10 Apr 2025 17:04:08 +0000 (22:34 +0530)
committerJonathan Cameron <Jonathan.Cameron@huawei.com>
Tue, 22 Apr 2025 18:10:04 +0000 (19:10 +0100)
Fix Smatch-detected issue:
drivers/iio/adc/ad_sigma_delta.c:604 ad_sd_trigger_handler() error:
uninitialized symbol 'status_pos'.

The variable `status_pos` was only initialized in specific switch cases
(1, 2, 3, 4), which could leave it uninitialized if `reg_size` had an
unexpected value.

Fix by adding a default case to the switch block to catch unexpected
values of `reg_size`. Use `dev_err_ratelimited()` for error logging and
`goto irq_handled` instead of returning early.

Signed-off-by: Purva Yeshi <purvayeshi550@gmail.com>
Link: https://patch.msgid.link/20250410170408.8585-1-purvayeshi550@gmail.com
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
drivers/iio/adc/ad_sigma_delta.c

index 6c37f8e21120b8927a9588f9db77a03957d171d9..4c5f8d29a559fea7226b84141bcb148fb801f62c 100644 (file)
@@ -587,6 +587,10 @@ static irqreturn_t ad_sd_trigger_handler(int irq, void *p)
                 * byte set to zero. */
                ad_sd_read_reg_raw(sigma_delta, data_reg, transfer_size, &data[1]);
                break;
+
+       default:
+               dev_err_ratelimited(&indio_dev->dev, "Unsupported reg_size: %u\n", reg_size);
+               goto irq_handled;
        }
 
        /*