|
@@ -994,14 +994,16 @@ void acpiphp_enumerate_slots(struct pci_bus *bus)
|
|
|
|
|
|
/*
|
|
|
* This bridge should have been registered as a hotplug function
|
|
|
- * under its parent, so the context has to be there. If not, we
|
|
|
- * are in deep goo.
|
|
|
+ * under its parent, so the context should be there, unless the
|
|
|
+ * parent is going to be handled by pciehp, in which case this
|
|
|
+ * bridge is not interesting to us either.
|
|
|
*/
|
|
|
mutex_lock(&acpiphp_context_lock);
|
|
|
context = acpiphp_get_context(handle);
|
|
|
- if (WARN_ON(!context)) {
|
|
|
+ if (!context) {
|
|
|
mutex_unlock(&acpiphp_context_lock);
|
|
|
put_device(&bus->dev);
|
|
|
+ pci_dev_put(bridge->pci_dev);
|
|
|
kfree(bridge);
|
|
|
return;
|
|
|
}
|