diff options
author | Stephane Grosjean <s.grosjean@peak-system.com> | 2017-11-23 17:44:35 +0300 |
---|---|---|
committer | Marc Kleine-Budde <mkl@pengutronix.de> | 2017-12-01 13:20:52 +0300 |
commit | 5c2cb02edf79ad79d9b8d07c6d52243a948c4c9f (patch) | |
tree | 9bf6eba1d991a9e003e7dc9c9bc9faa97850c8e0 /drivers/net/can/sja1000/peak_pci.c | |
parent | f6c23b174c3c96616514827407769cbcfc8005cf (diff) | |
download | linux-5c2cb02edf79ad79d9b8d07c6d52243a948c4c9f.tar.xz |
can: peak/pci: fix potential bug when probe() fails
PCI/PCIe drivers for PEAK-System CAN/CAN-FD interfaces do some access to the
PCI config during probing. In case one of these accesses fails, a POSITIVE
PCIBIOS_xxx error code is returned back. This POSITIVE error code MUST be
converted into a NEGATIVE errno for the probe() function to indicate it
failed. Using the pcibios_err_to_errno() function, we make sure that the
return code will always be negative.
Signed-off-by: Stephane Grosjean <s.grosjean@peak-system.com>
Cc: linux-stable <stable@vger.kernel.org>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
Diffstat (limited to 'drivers/net/can/sja1000/peak_pci.c')
-rw-r--r-- | drivers/net/can/sja1000/peak_pci.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/net/can/sja1000/peak_pci.c b/drivers/net/can/sja1000/peak_pci.c index 131026fbc2d7..5adc95c922ee 100644 --- a/drivers/net/can/sja1000/peak_pci.c +++ b/drivers/net/can/sja1000/peak_pci.c @@ -717,7 +717,10 @@ failure_release_regions: failure_disable_pci: pci_disable_device(pdev); - return err; + /* pci_xxx_config_word() return positive PCIBIOS_xxx error codes while + * the probe() function must return a negative errno in case of failure + * (err is unchanged if negative) */ + return pcibios_err_to_errno(err); } static void peak_pci_remove(struct pci_dev *pdev) |