Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c7fb0b35 authored by Ivan Kokshaysky's avatar Ivan Kokshaysky Committed by Linus Torvalds
Browse files

[PATCH] yenta oops fix

In some cases, especially on modern laptops with a lot of PCI and
cardbus bridges, we're unable to assign correct secondary/subordinate
bus numbers to all cardbus bridges due to BIOS limitations unless
we are using "pci=assign-busses" boot option.
So some cardbus controllers may not have attached subordinate pci_bus
structure, and yenta driver must cope with it - just ignore such cardbus
bridges.

For example, see https://bugzilla.novell.com/show_bug.cgi?id=113778



Signed-off-by: default avatarIvan Kokshaysky <ink@jurassic.park.msu.ru>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 2fd4ef85
Loading
Loading
Loading
Loading
+12 −1
Original line number Diff line number Diff line
@@ -1046,6 +1046,17 @@ static int __devinit yenta_probe (struct pci_dev *dev, const struct pci_device_i
	struct yenta_socket *socket;
	int ret;

	/*
	 * If we failed to assign proper bus numbers for this cardbus
	 * controller during PCI probe, its subordinate pci_bus is NULL.
	 * Bail out if so.
	 */
	if (!dev->subordinate) {
		printk(KERN_ERROR "Yenta: no bus associated with %s!\n",
			pci_name(dev));
		return -ENODEV;
	}

	socket = kmalloc(sizeof(struct yenta_socket), GFP_KERNEL);
	if (!socket)
		return -ENOMEM;