Patch "pcnet32: Use pci_resource_len to validate PCI resource" has been added to the 4.4-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    pcnet32: Use pci_resource_len to validate PCI resource

to the 4.4-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     pcnet32-use-pci_resource_len-to-validate-pci-resourc.patch
and it can be found in the queue-4.4 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 36f880469ab04916d78361ccf7b3a0ffa67869c3
Author: Guenter Roeck <linux@xxxxxxxxxxxx>
Date:   Mon Apr 5 21:29:22 2021 -0700

    pcnet32: Use pci_resource_len to validate PCI resource
    
    [ Upstream commit 66c3f05ddc538ee796321210c906b6ae6fc0792a ]
    
    pci_resource_start() is not a good indicator to determine if a PCI
    resource exists or not, since the resource may start at address 0.
    This is seen when trying to instantiate the driver in qemu for riscv32
    or riscv64.
    
    pci 0000:00:01.0: reg 0x10: [io  0x0000-0x001f]
    pci 0000:00:01.0: reg 0x14: [mem 0x00000000-0x0000001f]
    ...
    pcnet32: card has no PCI IO resources, aborting
    
    Use pci_resouce_len() instead.
    
    Signed-off-by: Guenter Roeck <linux@xxxxxxxxxxxx>
    Signed-off-by: David S. Miller <davem@xxxxxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/net/ethernet/amd/pcnet32.c b/drivers/net/ethernet/amd/pcnet32.c
index 7ccebae9cb48..b305903c91c4 100644
--- a/drivers/net/ethernet/amd/pcnet32.c
+++ b/drivers/net/ethernet/amd/pcnet32.c
@@ -1493,8 +1493,7 @@ pcnet32_probe_pci(struct pci_dev *pdev, const struct pci_device_id *ent)
 	}
 	pci_set_master(pdev);
 
-	ioaddr = pci_resource_start(pdev, 0);
-	if (!ioaddr) {
+	if (!pci_resource_len(pdev, 0)) {
 		if (pcnet32_debug & NETIF_MSG_PROBE)
 			pr_err("card has no PCI IO resources, aborting\n");
 		return -ENODEV;
@@ -1506,6 +1505,8 @@ pcnet32_probe_pci(struct pci_dev *pdev, const struct pci_device_id *ent)
 			pr_err("architecture does not support 32bit PCI busmaster DMA\n");
 		return err;
 	}
+
+	ioaddr = pci_resource_start(pdev, 0);
 	if (!request_region(ioaddr, PCNET32_TOTAL_SIZE, "pcnet32_probe_pci")) {
 		if (pcnet32_debug & NETIF_MSG_PROBE)
 			pr_err("io address range already allocated\n");



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux