drivers/scsi/pm8001/pm8001_ctl.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-)
The non_fatal_log_show() function is supposed to return negative
error codes on failure. But because the error codes are saved in
a u32 and then cast to signed long, they end up being high positive
values instead of negative. Remove the intermediary u32 variable
to fix this bug.
Fixes: dba2cc03b9db ("scsi: pm80xx: sysfs attribute for non fatal dump")
Signed-off-by: Dan Carpenter <error27@gmail.com>
---
drivers/scsi/pm8001/pm8001_ctl.c | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)
diff --git a/drivers/scsi/pm8001/pm8001_ctl.c b/drivers/scsi/pm8001/pm8001_ctl.c
index bb38b2d63acb..a27f3287748e 100644
--- a/drivers/scsi/pm8001/pm8001_ctl.c
+++ b/drivers/scsi/pm8001/pm8001_ctl.c
@@ -588,10 +588,7 @@ static DEVICE_ATTR(fatal_log, S_IRUGO, pm8001_ctl_fatal_log_show, NULL);
static ssize_t non_fatal_log_show(struct device *cdev,
struct device_attribute *attr, char *buf)
{
- u32 count;
-
- count = pm80xx_get_non_fatal_dump(cdev, attr, buf);
- return count;
+ return pm80xx_get_non_fatal_dump(cdev, attr, buf);
}
static DEVICE_ATTR_RO(non_fatal_log);
--
2.53.0
Dan, > The non_fatal_log_show() function is supposed to return negative error > codes on failure. But because the error codes are saved in a u32 and > then cast to signed long, they end up being high positive values > instead of negative. Remove the intermediary u32 variable to fix this > bug. Applied to 7.2/scsi-staging, thanks! -- Martin K. Petersen
On Sat, May 30, 2026 at 9:45 PM Dan Carpenter <error27@gmail.com> wrote:
>
> The non_fatal_log_show() function is supposed to return negative
> error codes on failure. But because the error codes are saved in
> a u32 and then cast to signed long, they end up being high positive
> values instead of negative. Remove the intermediary u32 variable
> to fix this bug.
>
> Fixes: dba2cc03b9db ("scsi: pm80xx: sysfs attribute for non fatal dump")
> Signed-off-by: Dan Carpenter <error27@gmail.com>
Acked-by: Jack Wang <jinpu.wang@ionos.com>
> ---
> drivers/scsi/pm8001/pm8001_ctl.c | 5 +----
> 1 file changed, 1 insertion(+), 4 deletions(-)
>
> diff --git a/drivers/scsi/pm8001/pm8001_ctl.c b/drivers/scsi/pm8001/pm8001_ctl.c
> index bb38b2d63acb..a27f3287748e 100644
> --- a/drivers/scsi/pm8001/pm8001_ctl.c
> +++ b/drivers/scsi/pm8001/pm8001_ctl.c
> @@ -588,10 +588,7 @@ static DEVICE_ATTR(fatal_log, S_IRUGO, pm8001_ctl_fatal_log_show, NULL);
> static ssize_t non_fatal_log_show(struct device *cdev,
> struct device_attribute *attr, char *buf)
> {
> - u32 count;
> -
> - count = pm80xx_get_non_fatal_dump(cdev, attr, buf);
> - return count;
> + return pm80xx_get_non_fatal_dump(cdev, attr, buf);
> }
> static DEVICE_ATTR_RO(non_fatal_log);
>
> --
> 2.53.0
>
© 2016 - 2026 Red Hat, Inc.