[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:
parent
2fd4ef85e0
commit
c7fb0b35ad
|
@ -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;
|
||||||
|
|
Loading…
Reference in New Issue