[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>

authored by Ivan Kokshaysky and committed by Linus Torvalds c7fb0b35 2fd4ef85

+12 -1
+12 -1
drivers/pcmcia/yenta_socket.c
··· 1045 { 1046 struct yenta_socket *socket; 1047 int ret; 1048 - 1049 socket = kmalloc(sizeof(struct yenta_socket), GFP_KERNEL); 1050 if (!socket) 1051 return -ENOMEM;
··· 1045 { 1046 struct yenta_socket *socket; 1047 int ret; 1048 + 1049 + /* 1050 + * If we failed to assign proper bus numbers for this cardbus 1051 + * controller during PCI probe, its subordinate pci_bus is NULL. 1052 + * Bail out if so. 1053 + */ 1054 + if (!dev->subordinate) { 1055 + printk(KERN_ERROR "Yenta: no bus associated with %s!\n", 1056 + pci_name(dev)); 1057 + return -ENODEV; 1058 + } 1059 + 1060 socket = kmalloc(sizeof(struct yenta_socket), GFP_KERNEL); 1061 if (!socket) 1062 return -ENOMEM;