summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorAndrew Goodbody <[email protected]>2025-07-22 15:06:14 +0100
committerNeil Armstrong <[email protected]>2025-09-30 20:32:15 +0200
commitb332723882f82f6feff027fb733c4b7e43bdef80 (patch)
treef8df508fc8fabbf03ce06a056d88f2376361c187 /drivers
parent033dbc7f9ec969168a2f48766cb16aa26fa381d8 (diff)
adc: meson-saradc: uint cannot be less than zero
timeout is declared as a uint but then tested for being less than zero which must always fail. Change the while loop for a pre-decrement on timeout and test timeout for being zero. This issue was found by Smatch. Signed-off-by: Andrew Goodbody <[email protected]> Reviewed-by: Neil Armstrong <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Neil Armstrong <[email protected]>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/adc/meson-saradc.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/drivers/adc/meson-saradc.c b/drivers/adc/meson-saradc.c
index 60e348968fb..0144ff828c5 100644
--- a/drivers/adc/meson-saradc.c
+++ b/drivers/adc/meson-saradc.c
@@ -205,9 +205,9 @@ static int meson_saradc_lock(struct meson_saradc_priv *priv)
do {
udelay(1);
regmap_read(priv->regmap, MESON_SAR_ADC_DELAY, &val);
- } while (val & MESON_SAR_ADC_DELAY_BL30_BUSY && timeout--);
+ } while (val & MESON_SAR_ADC_DELAY_BL30_BUSY && --timeout);
- if (timeout < 0) {
+ if (!timeout) {
printf("Timeout while waiting for BL30 unlock\n");
return -ETIMEDOUT;
}
@@ -256,9 +256,9 @@ static int meson_saradc_wait_busy_clear(struct meson_saradc_priv *priv)
do {
udelay(1);
regmap_read(priv->regmap, MESON_SAR_ADC_REG0, &regval);
- } while (FIELD_GET(MESON_SAR_ADC_REG0_BUSY_MASK, regval) && timeout--);
+ } while (FIELD_GET(MESON_SAR_ADC_REG0_BUSY_MASK, regval) && --timeout);
- if (timeout < 0)
+ if (!timeout)
return -ETIMEDOUT;
return 0;