[RFC][PATCH 10/30] ACPI / hotplug / PCI: Refactor slot allocation code in register_slot()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



From: Rafael J. Wysocki <rafael.j.wysocki@xxxxxxxxx>

To make the code in register_slot() a bit easier to follow, change
the way the slot allocation part is organized.  Drop one local
variable that's not used any more after that modification.

This code change should not lead to any changes in behavior.

Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@xxxxxxxxx>
---
 drivers/pci/hotplug/acpiphp_glue.c |   74 ++++++++++++++++++-------------------
 1 file changed, 36 insertions(+), 38 deletions(-)

Index: linux-pm/drivers/pci/hotplug/acpiphp_glue.c
===================================================================
--- linux-pm.orig/drivers/pci/hotplug/acpiphp_glue.c
+++ linux-pm/drivers/pci/hotplug/acpiphp_glue.c
@@ -285,7 +285,7 @@ static acpi_status register_slot(acpi_ha
 	acpi_handle tmp;
 	acpi_status status = AE_OK;
 	unsigned long long adr, sun;
-	int device, function, retval, found = 0;
+	int device, function, retval;
 	struct pci_bus *pbus = bridge->pci_bus;
 	struct pci_dev *pdev;
 	u32 val;
@@ -354,44 +354,49 @@ static acpi_status register_slot(acpi_ha
 		if (slot->device == device) {
 			if (slot->sun != sun)
 				warn("sibling found, but _SUN doesn't match!\n");
-			found = 1;
-			break;
-		}
 
-	if (!found) {
-		slot = kzalloc(sizeof(struct acpiphp_slot), GFP_KERNEL);
-		if (!slot) {
-			status = AE_NO_MEMORY;
-			goto err_out;
+			goto slot_found;
 		}
 
-		slot->bridge = bridge;
-		slot->device = device;
-		slot->sun = sun;
-		INIT_LIST_HEAD(&slot->funcs);
-		mutex_init(&slot->crit_sect);
+	slot = kzalloc(sizeof(struct acpiphp_slot), GFP_KERNEL);
+	if (!slot) {
+		status = AE_NO_MEMORY;
+		goto err;
+	}
 
-		mutex_lock(&bridge_mutex);
-		list_add_tail(&slot->node, &bridge->slots);
-		mutex_unlock(&bridge_mutex);
-		bridge->nr_slots++;
+	slot->bridge = bridge;
+	slot->device = device;
+	slot->sun = sun;
+	INIT_LIST_HEAD(&slot->funcs);
+	mutex_init(&slot->crit_sect);
 
-		dbg("found ACPI PCI Hotplug slot %llu at PCI %04x:%02x:%02x\n",
-		    slot->sun, pci_domain_nr(pbus), pbus->number, device);
-		retval = acpiphp_register_hotplug_slot(slot);
-		if (retval) {
-			if (retval == -EBUSY)
-				warn("Slot %llu already registered by another "
-					"hotplug driver\n", slot->sun);
-			else
-				warn("acpiphp_register_hotplug_slot failed "
-					"(err code = 0x%x)\n", retval);
+	mutex_lock(&bridge_mutex);
+	list_add_tail(&slot->node, &bridge->slots);
+	mutex_unlock(&bridge_mutex);
+	bridge->nr_slots++;
 
-			status = AE_OK;
-			goto err;
-		}
+	dbg("found ACPI PCI Hotplug slot %llu at PCI %04x:%02x:%02x\n",
+	    slot->sun, pci_domain_nr(pbus), pbus->number, device);
+
+	retval = acpiphp_register_hotplug_slot(slot);
+	if (retval) {
+		if (retval == -EBUSY)
+			warn("Slot %llu already registered by another "
+				"hotplug driver\n", slot->sun);
+		else
+			warn("acpiphp_register_hotplug_slot failed "
+				"(err code = 0x%x)\n", retval);
+
+		bridge->nr_slots--;
+		mutex_lock(&bridge_mutex);
+		list_del(&slot->node);
+		mutex_unlock(&bridge_mutex);
+		kfree(slot);
+		status = AE_OK;
+		goto err;
 	}
 
+ slot_found:
 	newfunc->slot = slot;
 	mutex_lock(&bridge_mutex);
 	list_add_tail(&newfunc->sibling, &slot->funcs);
@@ -435,13 +440,6 @@ static acpi_status register_slot(acpi_ha
 	return AE_OK;
 
  err:
-	bridge->nr_slots--;
-	mutex_lock(&bridge_mutex);
-	list_del(&slot->node);
-	mutex_unlock(&bridge_mutex);
-	kfree(slot);
-
- err_out:
 	mutex_lock(&acpiphp_context_lock);
 	context->func = NULL;
 	acpiphp_put_context(context);

--
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux IBM ACPI]     [Linux Power Management]     [Linux Kernel]     [Linux Laptop]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]     [Linux Resources]

  Powered by Linux