drivers/staging/iio/adc/ad7816.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
The driver currently returns -EIO for SPI read/write failures,
which hides the actual error code returned by the SPI subsystem.
Return the original error code instead to allow better diagnostics
and error handling by callers.
Signed-off-by: Hungyu Lin <dennylin0707@gmail.com>
---
drivers/staging/iio/adc/ad7816.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/staging/iio/adc/ad7816.c b/drivers/staging/iio/adc/ad7816.c
index 0e32a2295990..9052203eb4f3 100644
--- a/drivers/staging/iio/adc/ad7816.c
+++ b/drivers/staging/iio/adc/ad7816.c
@@ -222,7 +222,7 @@ static ssize_t ad7816_show_value(struct device *dev,
ret = ad7816_spi_read(chip, &data);
if (ret)
- return -EIO;
+ return ret;
data >>= AD7816_VALUE_OFFSET;
@@ -320,7 +320,7 @@ static inline ssize_t ad7816_set_oti(struct device *dev,
ret = ad7816_spi_write(chip, data);
if (ret)
- return -EIO;
+ return ret;
chip->oti_data[chip->channel_id] = data;
--
2.34.1
On Sat, May 09, 2026 at 02:06:46AM +0000, Hungyu Lin wrote: > The driver currently returns -EIO for SPI read/write failures, > which hides the actual error code returned by the SPI subsystem. > > Return the original error code instead to allow better diagnostics > and error handling by callers. ... > static ssize_t ad7816_show_value(struct device *dev, > ret = ad7816_spi_read(chip, &data); > if (ret) > - return -EIO; > + return ret; At least this is an ABI change and should have been mentioned in the commit message and justified. Yes, error code is an ABI and infamous case is already known when similar change badly broke user space. https://lkml.org/lkml/2012/12/23/75 ... > static inline ssize_t ad7816_set_oti(struct device *dev, > ret = ad7816_spi_write(chip, data); > if (ret) > - return -EIO; > + return ret; Haven't checked this one, though. -- With Best Regards, Andy Shevchenko
Hi Andy, Thanks for pointing this out. You're right that this changes the userspace-visible error codes and can be considered an ABI change. I don't think this is worth the risk, so I'll drop this change. Thanks, Hungyu On Fri, May 8, 2026 at 11:57 PM Andy Shevchenko <andriy.shevchenko@intel.com> wrote: > > On Sat, May 09, 2026 at 02:06:46AM +0000, Hungyu Lin wrote: > > The driver currently returns -EIO for SPI read/write failures, > > which hides the actual error code returned by the SPI subsystem. > > > > Return the original error code instead to allow better diagnostics > > and error handling by callers. > > ... > > > static ssize_t ad7816_show_value(struct device *dev, > > > ret = ad7816_spi_read(chip, &data); > > if (ret) > > - return -EIO; > > + return ret; > > At least this is an ABI change and should have been mentioned in the commit > message and justified. > > Yes, error code is an ABI and infamous case is already known when similar > change badly broke user space. > > https://lkml.org/lkml/2012/12/23/75 > > ... > > > static inline ssize_t ad7816_set_oti(struct device *dev, > > > ret = ad7816_spi_write(chip, data); > > if (ret) > > - return -EIO; > > + return ret; > > Haven't checked this one, though. > > -- > With Best Regards, > Andy Shevchenko > >
© 2016 - 2026 Red Hat, Inc.