Message ID | 1634566838-3804-1-git-send-email-zheyuma97@gmail.com (mailing list archive) |
---|---|
State | Accepted |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | mISDN: Fix return values of the probe function | expand |
Context | Check | Description |
---|---|---|
netdev/tree_selection | success | Not a local patch |
10/18/21 5:20 PM, Zheyu Ma пишет: > During the process of driver probing, the probe function should return < 0 > for failure, otherwise, the kernel will treat value > 0 as success. setup_card() checks for the return value. Thus it makes sense to submit the patch with net-next tag > > Signed-off-by: Zheyu Ma <zheyuma97@gmail.com> > --- > drivers/isdn/hardware/mISDN/hfcpci.c | 8 ++++---- > 1 file changed, 4 insertions(+), 4 deletions(-) > > diff --git a/drivers/isdn/hardware/mISDN/hfcpci.c b/drivers/isdn/hardware/mISDN/hfcpci.c > index e501cb03f211..bd087cca1c1d 100644 > --- a/drivers/isdn/hardware/mISDN/hfcpci.c > +++ b/drivers/isdn/hardware/mISDN/hfcpci.c > @@ -1994,14 +1994,14 @@ setup_hw(struct hfc_pci *hc) > pci_set_master(hc->pdev); > if (!hc->irq) { > printk(KERN_WARNING "HFC-PCI: No IRQ for PCI card found\n"); > - return 1; > + return -EINVAL; > } > hc->hw.pci_io = > (char __iomem *)(unsigned long)hc->pdev->resource[1].start; > > if (!hc->hw.pci_io) { > printk(KERN_WARNING "HFC-PCI: No IO-Mem for PCI card found\n"); > - return 1; > + return -ENOMEM; > } > /* Allocate memory for FIFOS */ > /* the memory needs to be on a 32k boundary within the first 4G */ > @@ -2012,7 +2012,7 @@ setup_hw(struct hfc_pci *hc) > if (!buffer) { > printk(KERN_WARNING > "HFC-PCI: Error allocating memory for FIFO!\n"); > - return 1; > + return -ENOMEM; > } > hc->hw.fifos = buffer; > pci_write_config_dword(hc->pdev, 0x80, hc->hw.dmahandle); > @@ -2022,7 +2022,7 @@ setup_hw(struct hfc_pci *hc) > "HFC-PCI: Error in ioremap for PCI!\n"); > dma_free_coherent(&hc->pdev->dev, 0x8000, hc->hw.fifos, > hc->hw.dmahandle); > - return 1; > + return -ENOMEM; > } > > printk(KERN_INFO >
On Mon, 18 Oct 2021 20:06:51 +0300 Denis Kirjanov wrote: > 10/18/21 5:20 PM, Zheyu Ma пишет: > > During the process of driver probing, the probe function should return < 0 > > for failure, otherwise, the kernel will treat value > 0 as success. > > setup_card() checks for the return value. > Thus it makes sense to submit the patch with net-next tag setup_card() propagates the value returned by setup_hw() which in turn gets propagated by hfc_probe() and hits local_pci_probe(): /* * Probe function should return < 0 for failure, 0 for success * Treat values > 0 as success, but warn. */ pci_warn(pci_dev, "Driver probe function unexpectedly returned %d\n", rc); return 0; But you're right, this is a minor bug, hfc_remove_pci() checks if driver data is already NULL so there will be no crash. Just a driver bound to a device even though probe failed. Still net material tho.
diff --git a/drivers/isdn/hardware/mISDN/hfcpci.c b/drivers/isdn/hardware/mISDN/hfcpci.c index e501cb03f211..bd087cca1c1d 100644 --- a/drivers/isdn/hardware/mISDN/hfcpci.c +++ b/drivers/isdn/hardware/mISDN/hfcpci.c @@ -1994,14 +1994,14 @@ setup_hw(struct hfc_pci *hc) pci_set_master(hc->pdev); if (!hc->irq) { printk(KERN_WARNING "HFC-PCI: No IRQ for PCI card found\n"); - return 1; + return -EINVAL; } hc->hw.pci_io = (char __iomem *)(unsigned long)hc->pdev->resource[1].start; if (!hc->hw.pci_io) { printk(KERN_WARNING "HFC-PCI: No IO-Mem for PCI card found\n"); - return 1; + return -ENOMEM; } /* Allocate memory for FIFOS */ /* the memory needs to be on a 32k boundary within the first 4G */ @@ -2012,7 +2012,7 @@ setup_hw(struct hfc_pci *hc) if (!buffer) { printk(KERN_WARNING "HFC-PCI: Error allocating memory for FIFO!\n"); - return 1; + return -ENOMEM; } hc->hw.fifos = buffer; pci_write_config_dword(hc->pdev, 0x80, hc->hw.dmahandle); @@ -2022,7 +2022,7 @@ setup_hw(struct hfc_pci *hc) "HFC-PCI: Error in ioremap for PCI!\n"); dma_free_coherent(&hc->pdev->dev, 0x8000, hc->hw.fifos, hc->hw.dmahandle); - return 1; + return -ENOMEM; } printk(KERN_INFO
During the process of driver probing, the probe function should return < 0 for failure, otherwise, the kernel will treat value > 0 as success. Signed-off-by: Zheyu Ma <zheyuma97@gmail.com> --- drivers/isdn/hardware/mISDN/hfcpci.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)