leds: ss4200: Convert PCIBIOS_* return codes to errnos
authorIlpo Järvinen <ilpo.jarvinen@linux.intel.com>
Mon, 27 May 2024 13:27:00 +0000 (16:27 +0300)
committerLee Jones <lee@kernel.org>
Fri, 21 Jun 2024 10:57:16 +0000 (11:57 +0100)
ich7_lpc_probe() uses pci_read_config_dword() that returns PCIBIOS_*
codes. The error handling code assumes incorrectly it's a normal errno
and checks for < 0. The return code is returned from the probe function
as is but probe functions should return normal errnos.

Remove < 0 from the check and convert PCIBIOS_* returns code using
pcibios_err_to_errno() into normal errno before returning it.

Fixes: a328e95b82c1 ("leds: LED driver for Intel NAS SS4200 series (v5)")
Cc: <stable@vger.kernel.org>
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Link: https://lore.kernel.org/r/20240527132700.14260-1-ilpo.jarvinen@linux.intel.com
Signed-off-by: Lee Jones <lee@kernel.org>
drivers/leds/leds-ss4200.c

index fcaa34706b6caa16e8d11f941db6198fd5578b6f..2ef9fc7371bd1fc6fe26dd0dca25f0993f0bac24 100644 (file)
@@ -356,8 +356,10 @@ static int ich7_lpc_probe(struct pci_dev *dev,
 
        nas_gpio_pci_dev = dev;
        status = pci_read_config_dword(dev, PMBASE, &g_pm_io_base);
-       if (status)
+       if (status) {
+               status = pcibios_err_to_errno(status);
                goto out;
+       }
        g_pm_io_base &= 0x00000ff80;
 
        status = pci_read_config_dword(dev, GPIO_CTRL, &gc);
@@ -369,8 +371,9 @@ static int ich7_lpc_probe(struct pci_dev *dev,
        }
 
        status = pci_read_config_dword(dev, GPIO_BASE, &nas_gpio_io_base);
-       if (0 > status) {
+       if (status) {
                dev_info(&dev->dev, "Unable to read GPIOBASE.\n");
+               status = pcibios_err_to_errno(status);
                goto out;
        }
        dev_dbg(&dev->dev, ": GPIOBASE = 0x%08x\n", nas_gpio_io_base);