From 4e3b369f0b0a5fc3f49867825e8dc9b29212e8b6 Mon Sep 17 00:00:00 2001 From: Matthew Wilcox Date: Fri, 26 Mar 2004 00:32:21 -0800 Subject: [PATCH] [PATCH] PCI Hotplug: Don't up() twice in acpiphp On the error path, we currently try to up() a semaphore twice. There was also a typo in an error message. --- drivers/pci/hotplug/acpiphp_glue.c | 38 ++++++++++++++---------------- 1 file changed, 18 insertions(+), 20 deletions(-) diff --git a/drivers/pci/hotplug/acpiphp_glue.c b/drivers/pci/hotplug/acpiphp_glue.c index 628fb25cca603..4f3594293e8fb 100644 --- a/drivers/pci/hotplug/acpiphp_glue.c +++ b/drivers/pci/hotplug/acpiphp_glue.c @@ -1243,40 +1243,38 @@ int acpiphp_disable_slot(struct acpiphp_slot *slot) /** * acpiphp_check_bridge - re-enumerate devices + * + * Iterate over all slots under this bridge and make sure that if a + * card is present they are enabled, and if not they are disabled. */ int acpiphp_check_bridge(struct acpiphp_bridge *bridge) { struct acpiphp_slot *slot; - unsigned int sta; int retval = 0; int enabled, disabled; enabled = disabled = 0; for (slot = bridge->slots; slot; slot = slot->next) { - sta = get_slot_status(slot); + unsigned int status = get_slot_status(slot); if (slot->flags & SLOT_ENABLED) { - /* if enabled but not present, disable */ - if (sta != ACPI_STA_ALL) { - retval = acpiphp_disable_slot(slot); - if (retval) { - err("Error occurred in enabling\n"); - up(&slot->crit_sect); - goto err_exit; - } - disabled++; + if (status == ACPI_STA_ALL) + continue; + retval = acpiphp_disable_slot(slot); + if (retval) { + err("Error occurred in disabling\n"); + goto err_exit; } + disabled++; } else { - /* if disabled but present, enable */ - if (sta == ACPI_STA_ALL) { - retval = acpiphp_enable_slot(slot); - if (retval) { - err("Error occurred in enabling\n"); - up(&slot->crit_sect); - goto err_exit; - } - enabled++; + if (status != ACPI_STA_ALL) + continue; + retval = acpiphp_enable_slot(slot); + if (retval) { + err("Error occurred in enabling\n"); + goto err_exit; } + enabled++; } } -- 2.53.0