[PATCH] hwmon: (ads7871) Fix incorrect error code in voltage_show

Tabrez Ahmed posted 1 patch 1 month ago
There is a newer version of this series
drivers/hwmon/ads7871.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
[PATCH] hwmon: (ads7871) Fix incorrect error code in voltage_show
Posted by Tabrez Ahmed 1 month ago
The voltage_show() function returns -1 when the A/D conversion
fails to complete within the polling loop. -1 maps to -EPERM
(operation not permitted), which does not describe the actual
failure.

Replace this -1 error code with -ETIMEDOUT to better indicate
the timeout condition to userspace.

Note: not runtime tested due to lack of hardware.

Signed-off-by: Tabrez Ahmed <tabreztalks@gmail.com>
---
Note: This patch applies on top of my previously submitted patch:
"hwmon: (ads7871) Replace sprintf() with sysfs_emit()"
 
 drivers/hwmon/ads7871.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/hwmon/ads7871.c b/drivers/hwmon/ads7871.c
index b84426c940c5e..4df54c86f786c 100644
--- a/drivers/hwmon/ads7871.c
+++ b/drivers/hwmon/ads7871.c
@@ -126,7 +126,7 @@ static ssize_t voltage_show(struct device *dev, struct device_attribute *da,
 		val = ((val >> 2) * 25000) / 8192;
 		return sysfs_emit(buf, "%d\n", val);
 	} else {
-		return -1;
+		return -ETIMEDOUT;
 	}
 }
 
-- 
2.43.0
Re: [PATCH] hwmon: (ads7871) Fix incorrect error code in voltage_show
Posted by Guenter Roeck 1 month ago
Hi,

On 3/7/26 02:16, Tabrez Ahmed wrote:
> The voltage_show() function returns -1 when the A/D conversion
> fails to complete within the polling loop. -1 maps to -EPERM
> (operation not permitted), which does not describe the actual
> failure.
> 
> Replace this -1 error code with -ETIMEDOUT to better indicate
> the timeout condition to userspace.
> 
> Note: not runtime tested due to lack of hardware.
> 
> Signed-off-by: Tabrez Ahmed <tabreztalks@gmail.com>
> ---
> Note: This patch applies on top of my previously submitted patch:
> "hwmon: (ads7871) Replace sprintf() with sysfs_emit()"
>   
>   drivers/hwmon/ads7871.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/hwmon/ads7871.c b/drivers/hwmon/ads7871.c
> index b84426c940c5e..4df54c86f786c 100644
> --- a/drivers/hwmon/ads7871.c
> +++ b/drivers/hwmon/ads7871.c
> @@ -126,7 +126,7 @@ static ssize_t voltage_show(struct device *dev, struct device_attribute *da,
>   		val = ((val >> 2) * 25000) / 8192;
>   		return sysfs_emit(buf, "%d\n", val);
>   	} else {
> -		return -1;
> +		return -ETIMEDOUT;
>   	}
>   }
>   

Good find, but please also drop the else (else after return is unnecessary).

Thanks,
Guenter