ACPI: OSL: Rework error handling in acpi_os_execute()
authorRafael J. Wysocki <rafael.j.wysocki@intel.com>
Wed, 29 Nov 2023 13:46:51 +0000 (14:46 +0100)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Wed, 6 Dec 2023 20:14:33 +0000 (21:14 +0100)
Reduce the number of checks and goto labels related to error handling
in acpi_os_execute() and drop the status local variable, which turns
out to be redundant, from it.

No intentional functional impact.

Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
drivers/acpi/osl.c

index d56dda795118413bc379a63945d18476d9820bb6..603057f6c63ec55b1c1e44c04bc70af3f3f69c65 100644 (file)
@@ -1060,7 +1060,6 @@ int __init acpi_debugger_init(void)
 acpi_status acpi_os_execute(acpi_execute_type type,
                            acpi_osd_exec_callback function, void *context)
 {
-       acpi_status status = AE_OK;
        struct acpi_os_dpc *dpc;
        struct workqueue_struct *queue;
        int ret;
@@ -1073,9 +1072,9 @@ acpi_status acpi_os_execute(acpi_execute_type type,
                ret = acpi_debugger_create_thread(function, context);
                if (ret) {
                        pr_err("Kernel thread creation failed\n");
-                       status = AE_ERROR;
+                       return AE_ERROR;
                }
-               goto out_thread;
+               return AE_OK;
        }
 
        /*
@@ -1107,12 +1106,9 @@ acpi_status acpi_os_execute(acpi_execute_type type,
                INIT_WORK(&dpc->work, acpi_os_execute_deferred);
        } else {
                pr_err("Unsupported os_execute type %d.\n", type);
-               status = AE_ERROR;
+               goto err;
        }
 
-       if (ACPI_FAILURE(status))
-               goto err_workqueue;
-
        /*
         * On some machines, a software-initiated SMI causes corruption unless
         * the SMI runs on CPU 0.  An SMI can be initiated by any AML, but
@@ -1123,13 +1119,14 @@ acpi_status acpi_os_execute(acpi_execute_type type,
        ret = queue_work_on(0, queue, &dpc->work);
        if (!ret) {
                pr_err("Unable to queue work\n");
-               status = AE_ERROR;
+               goto err;
        }
-err_workqueue:
-       if (ACPI_FAILURE(status))
-               kfree(dpc);
-out_thread:
-       return status;
+
+       return AE_OK;
+
+err:
+       kfree(dpc);
+       return AE_ERROR;
 }
 EXPORT_SYMBOL(acpi_os_execute);