When acpiphp_enable_slot() is failed, acpiphp does not change
the slot->flags. Therefore, when user tries to read power
status, acpiphp_get_power_status() returns the enable status
whether the slot is not really enabled.
This patch fixes this BUG.
Signed-off-by: MUNEDA Takahiro <muneda.takahiro@jp.fujitsu.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
        if (retval)
                goto err_exit;
 
-       if (get_slot_status(slot) == ACPI_STA_ALL)
+       if (get_slot_status(slot) == ACPI_STA_ALL) {
                /* configure all functions */
                retval = enable_device(slot);
+               if (retval)
+                       power_off_slot(slot);
+       } else {
+               dbg("%s: Slot status is not ACPI_STA_ALL\n", __FUNCTION__);
+               power_off_slot(slot);
+       }
 
  err_exit:
        mutex_unlock(&slot->crit_sect);