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: Hanjun Guo <guohanjun@huawei.com> [ rjw: avoid adding a label in acpi_ec_ecdt_start() ] Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
This commit is contained in:
Родитель
11c7bdffc7
Коммит
f900bf4951
|
@ -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)
|
||||||
* 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)
|
||||||
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
|
||||||
|
|
Загрузка…
Ссылка в новой задаче