From muneda.takahiro@jp.fujitsu.com Tue Mar 21 21:49:53 2006 Date: Wed, 22 Mar 2006 14:49:33 +0900 Message-ID: <87hd5rc9le.wl%muneda.takahiro@jp.fujitsu.com> From: MUNEDA Takahiro To: Greg KH Cc: MUNEDA Takahiro Subject: acpiphp: turn off slot power at error case 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 Signed-off-by: Greg Kroah-Hartman --- drivers/pci/hotplug/acpiphp_glue.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) --- gregkh-2.6.orig/drivers/pci/hotplug/acpiphp_glue.c +++ gregkh-2.6/drivers/pci/hotplug/acpiphp_glue.c @@ -1592,9 +1592,15 @@ int acpiphp_enable_slot(struct acpiphp_s 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);