PCI: Simplify pci_create_slot() logic
authorIlpo Järvinen <ilpo.jarvinen@linux.intel.com>
Fri, 4 Oct 2024 15:22:40 +0000 (18:22 +0300)
committerBjorn Helgaas <bhelgaas@google.com>
Fri, 4 Oct 2024 22:02:00 +0000 (17:02 -0500)
Simplify pci_create_slot() by splitting an "if" statement into two parts.
In order to not duplicate error handling, add a new label to handle kobj
put.

Link: https://lore.kernel.org/r/20241004152240.7926-1-ilpo.jarvinen@linux.intel.com
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
drivers/pci/slot.c

index 0f87cad..9ac5a4f 100644 (file)
@@ -244,12 +244,13 @@ struct pci_slot *pci_create_slot(struct pci_bus *parent, int slot_nr,
        slot = get_slot(parent, slot_nr);
        if (slot) {
                if (hotplug) {
-                       if ((err = slot->hotplug ? -EBUSY : 0)
-                            || (err = rename_slot(slot, name))) {
-                               kobject_put(&slot->kobj);
-                               slot = NULL;
-                               goto err;
+                       if (slot->hotplug) {
+                               err = -EBUSY;
+                               goto put_slot;
                        }
+                       err = rename_slot(slot, name);
+                       if (err)
+                               goto put_slot;
                }
                goto out;
        }
@@ -278,10 +279,8 @@ placeholder:
 
        err = kobject_init_and_add(&slot->kobj, &pci_slot_ktype, NULL,
                                   "%s", slot_name);
-       if (err) {
-               kobject_put(&slot->kobj);
-               goto err;
-       }
+       if (err)
+               goto put_slot;
 
        down_read(&pci_bus_sem);
        list_for_each_entry(dev, &parent->devices, bus_list)
@@ -296,6 +295,9 @@ out:
        kfree(slot_name);
        mutex_unlock(&pci_slot_mutex);
        return slot;
+
+put_slot:
+       kobject_put(&slot->kobj);
 err:
        slot = ERR_PTR(err);
        goto out;