[PATCH] acpiphp: turn off slot power at error case
authorMUNEDA Takahiro <muneda.takahiro@jp.fujitsu.com>
Wed, 22 Mar 2006 05:49:33 +0000 (14:49 +0900)
committerGreg Kroah-Hartman <gregkh@suse.de>
Mon, 19 Jun 2006 21:13:22 +0000 (14:13 -0700)
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>
drivers/pci/hotplug/acpiphp_glue.c

index bbe27c16bc3d0ff09f8657df6f36cb8e767c879d..610a530232ffbe7e5d94b0cde7b49857b07fb748 100644 (file)
@@ -1592,9 +1592,15 @@ int acpiphp_enable_slot(struct acpiphp_slot *slot)
        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);