On 27/05/24 16:24, Ilpo Järvinen wrote: > jmicron_pmos() and sdhci_pci_probe() use pci_{read,write}_config_byte() > that return PCIBIOS_* codes. The return code is then returned as is by > jmicron_probe() and sdhci_pci_probe(). Similarly, the return code is > also returned as is from jmicron_resume(). Both probe and resume > functions should return normal errnos. > > Convert PCIBIOS_* returns code using pcibios_err_to_errno() into normal > errno before returning them the fix these issues. > > Fixes: 7582041ff3d4 ("mmc: sdhci-pci: fix simple_return.cocci warnings") > Fixes: 45211e215984 ("sdhci: toggle JMicron PMOS setting") > Cc: stable@xxxxxxxxxxxxxxx > Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@xxxxxxxxxxxxxxx> Acked-by: Adrian Hunter <adrian.hunter@xxxxxxxxx> > --- > drivers/mmc/host/sdhci-pci-core.c | 11 +++++++---- > 1 file changed, 7 insertions(+), 4 deletions(-) > > diff --git a/drivers/mmc/host/sdhci-pci-core.c b/drivers/mmc/host/sdhci-pci-core.c > index ef89ec382bfe..23e6ba70144c 100644 > --- a/drivers/mmc/host/sdhci-pci-core.c > +++ b/drivers/mmc/host/sdhci-pci-core.c > @@ -1326,7 +1326,7 @@ static int jmicron_pmos(struct sdhci_pci_chip *chip, int on) > > ret = pci_read_config_byte(chip->pdev, 0xAE, &scratch); > if (ret) > - return ret; > + goto fail; > > /* > * Turn PMOS on [bit 0], set over current detection to 2.4 V > @@ -1337,7 +1337,10 @@ static int jmicron_pmos(struct sdhci_pci_chip *chip, int on) > else > scratch &= ~0x47; > > - return pci_write_config_byte(chip->pdev, 0xAE, scratch); > + ret = pci_write_config_byte(chip->pdev, 0xAE, scratch); > + > +fail: > + return pcibios_err_to_errno(ret); > } > > static int jmicron_probe(struct sdhci_pci_chip *chip) > @@ -2202,7 +2205,7 @@ static int sdhci_pci_probe(struct pci_dev *pdev, > > ret = pci_read_config_byte(pdev, PCI_SLOT_INFO, &slots); > if (ret) > - return ret; > + return pcibios_err_to_errno(ret); > > slots = PCI_SLOT_INFO_SLOTS(slots) + 1; > dev_dbg(&pdev->dev, "found %d slot(s)\n", slots); > @@ -2211,7 +2214,7 @@ static int sdhci_pci_probe(struct pci_dev *pdev, > > ret = pci_read_config_byte(pdev, PCI_SLOT_INFO, &first_bar); > if (ret) > - return ret; > + return pcibios_err_to_errno(ret); > > first_bar &= PCI_SLOT_INFO_FIRST_BAR_MASK; >