[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: Ivan Kokshaysky <ink@jurassic.park.msu.ru>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
Ivan Kokshaysky 2005-09-14 23:05:30 +04:00 committed by Linus Torvalds
parent 2fd4ef85e0
commit c7fb0b35ad
1 changed files with 12 additions and 1 deletions

View File

@ -1046,6 +1046,17 @@ static int __devinit yenta_probe (struct pci_dev *dev, const struct pci_device_i
struct yenta_socket *socket; struct yenta_socket *socket;
int ret; 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); socket = kmalloc(sizeof(struct yenta_socket), GFP_KERNEL);
if (!socket) if (!socket)
return -ENOMEM; return -ENOMEM;