[PATCH] PCI: Fix __pci_bus_size_bridges when bridge is not available

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

 



A virtual PCI controller may not have a bridge device, thus when __pci_bus_size_bridges is called, it will generate a NULL pointer exception when accessing bus->self->class. The attached patch adds a check to verify if a bridge has been set. Without a bridge device, the function returns.

Signed-off-by: David Engraf <david.engraf <at> sysgo.com>

diff --git a/drivers/pci/setup-bus.c b/drivers/pci/setup-bus.c
index 55641a3..ddb3381 100644
--- a/drivers/pci/setup-bus.c
+++ b/drivers/pci/setup-bus.c
@@ -1245,6 +1245,10 @@ void __pci_bus_size_bridges(struct pci_bus *bus, struct list_head *realloc_head)
 	if (pci_is_root_bus(bus))
 		return;
 
+	/* bridge device available? */
+	if (!bus->self)
+		return;
+
 	switch (bus->self->class >> 8) {
 	case PCI_CLASS_BRIDGE_CARDBUS:
 		/* don't size cardbuses yet. */

[Index of Archives]     [DMA Engine]     [Linux Coverity]     [Linux USB]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Greybus]

  Powered by Linux