From: Akinobu Mita acpiphp_glue_exit() needs to be called to unwind when no slots found. (It fixes data corruption when reloading acpiphp driver with no such devices) Cc: Greg Kroah-Hartman Cc: Kristen Carlson Accardi Signed-off-by: Akinobu Mita Signed-off-by: Andrew Morton --- drivers/pci/hotplug/acpiphp_core.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff -puN drivers/pci/hotplug/acpiphp_core.c~acpiphp-fix-missing-acpiphp_glue_exit drivers/pci/hotplug/acpiphp_core.c --- a/drivers/pci/hotplug/acpiphp_core.c~acpiphp-fix-missing-acpiphp_glue_exit +++ a/drivers/pci/hotplug/acpiphp_core.c @@ -303,8 +303,10 @@ static int __init init_acpi(void) /* read initial number of slots */ if (!retval) { num_slots = acpiphp_get_num_slots(); - if (num_slots == 0) + if (num_slots == 0) { + acpiphp_glue_exit(); retval = -ENODEV; + } } return retval; _