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;
                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;
        }
 
        /*
                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
        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);