Commit f900bf49 authored by Hanjun Guo's avatar Hanjun Guo Committed by Rafael J. Wysocki

ACPI: EC: Put the ACPI table after using it

The embedded controller boot resources table needs to be
released after using it.
Signed-off-by: default avatarHanjun Guo <guohanjun@huawei.com>
[ rjw: avoid adding a label in acpi_ec_ecdt_start() ]
Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
parent 11c7bdff
...@@ -1783,13 +1783,14 @@ static void __init acpi_ec_ecdt_start(void) ...@@ -1783,13 +1783,14 @@ static void __init acpi_ec_ecdt_start(void)
return; return;
status = acpi_get_handle(NULL, ecdt_ptr->id, &handle); status = acpi_get_handle(NULL, ecdt_ptr->id, &handle);
if (ACPI_FAILURE(status)) if (ACPI_SUCCESS(status)) {
return; boot_ec->handle = handle;
boot_ec->handle = handle; /* Add a special ACPI device object to represent the boot EC. */
acpi_bus_register_early_device(ACPI_BUS_TYPE_ECDT_EC);
}
/* Add a special ACPI device object to represent the boot EC. */ acpi_put_table((struct acpi_table_header *)ecdt_ptr);
acpi_bus_register_early_device(ACPI_BUS_TYPE_ECDT_EC);
} }
/* /*
...@@ -1891,12 +1892,12 @@ void __init acpi_ec_ecdt_probe(void) ...@@ -1891,12 +1892,12 @@ void __init acpi_ec_ecdt_probe(void)
* Asus X50GL: * Asus X50GL:
* https://bugzilla.kernel.org/show_bug.cgi?id=11880 * https://bugzilla.kernel.org/show_bug.cgi?id=11880
*/ */
return; goto out;
} }
ec = acpi_ec_alloc(); ec = acpi_ec_alloc();
if (!ec) if (!ec)
return; goto out;
if (EC_FLAGS_CORRECT_ECDT) { if (EC_FLAGS_CORRECT_ECDT) {
ec->command_addr = ecdt_ptr->data.address; ec->command_addr = ecdt_ptr->data.address;
...@@ -1922,13 +1923,16 @@ void __init acpi_ec_ecdt_probe(void) ...@@ -1922,13 +1923,16 @@ void __init acpi_ec_ecdt_probe(void)
ret = acpi_ec_setup(ec, NULL); ret = acpi_ec_setup(ec, NULL);
if (ret) { if (ret) {
acpi_ec_free(ec); acpi_ec_free(ec);
return; goto out;
} }
boot_ec = ec; boot_ec = ec;
boot_ec_is_ecdt = true; boot_ec_is_ecdt = true;
pr_info("Boot ECDT EC used to handle transactions\n"); pr_info("Boot ECDT EC used to handle transactions\n");
out:
acpi_put_table((struct acpi_table_header *)ecdt_ptr);
} }
#ifdef CONFIG_PM_SLEEP #ifdef CONFIG_PM_SLEEP
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment