]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
iio: adc: ad7280a: handle spi_setup() errors in probe()
authorPavel Zhigulin <Pavel.Zhigulin@kaspersky.com>
Fri, 14 Nov 2025 15:13:01 +0000 (18:13 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 30 Jan 2026 09:27:35 +0000 (10:27 +0100)
[ Upstream commit 6b39824ac4c15783787e6434449772bfb2e31214 ]

The probe() function ignored the return value of spi_setup(), leaving SPI
configuration failures undetected. If spi_setup() fails, the driver should
stop initialization and propagate the error to the caller.

Add proper error handling: check the return value of spi_setup() and return
it on failure.

Found by Linux Verification Center (linuxtesting.org) with SVACE.

Fixes: 2051f25d2a26 ("iio: adc: New driver for AD7280A Lithium Ion Battery Monitoring System")
Signed-off-by: Pavel Zhigulin <Pavel.Zhigulin@kaspersky.com>
Reviewed-by: Marcelo Schmitt <marcelo.schmitt@analog.com>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/iio/adc/ad7280a.c

index 9080c795dcb7e457a88706a4c73671a250b0961b..10cc623bf62a337b021d52c5d8adb002ef29630b 100644 (file)
@@ -1028,7 +1028,9 @@ static int ad7280_probe(struct spi_device *spi)
 
        st->spi->max_speed_hz = AD7280A_MAX_SPI_CLK_HZ;
        st->spi->mode = SPI_MODE_1;
-       spi_setup(st->spi);
+       ret = spi_setup(st->spi);
+       if (ret < 0)
+               return ret;
 
        st->ctrl_lb = FIELD_PREP(AD7280A_CTRL_LB_ACQ_TIME_MSK, st->acquisition_time) |
                FIELD_PREP(AD7280A_CTRL_LB_THERMISTOR_MSK, st->thermistor_term_en);