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

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
Loading
Loading
Loading
Loading
+12 −8
Original line number Diff line number Diff line
@@ -1783,15 +1783,16 @@ static void __init acpi_ec_ecdt_start(void)
		return;

	status = acpi_get_handle(NULL, ecdt_ptr->id, &handle);
	if (ACPI_FAILURE(status))
		return;

	if (ACPI_SUCCESS(status)) {
		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);
	}

	acpi_put_table((struct acpi_table_header *)ecdt_ptr);
}

/*
 * On some hardware it is necessary to clear events accumulated by the EC during
 * sleep. These ECs stop reporting GPEs until they are manually polled, if too
@@ -1891,12 +1892,12 @@ void __init acpi_ec_ecdt_probe(void)
		 * Asus X50GL:
		 * https://bugzilla.kernel.org/show_bug.cgi?id=11880
		 */
		return;
		goto out;
	}

	ec = acpi_ec_alloc();
	if (!ec)
		return;
		goto out;

	if (EC_FLAGS_CORRECT_ECDT) {
		ec->command_addr = ecdt_ptr->data.address;
@@ -1922,13 +1923,16 @@ void __init acpi_ec_ecdt_probe(void)
	ret = acpi_ec_setup(ec, NULL);
	if (ret) {
		acpi_ec_free(ec);
		return;
		goto out;
	}

	boot_ec = ec;
	boot_ec_is_ecdt = true;

	pr_info("Boot ECDT EC used to handle transactions\n");

out:
	acpi_put_table((struct acpi_table_header *)ecdt_ptr);
}

#ifdef CONFIG_PM_SLEEP