summaryrefslogtreecommitdiffstats
path: root/drivers/acpi
diff options
context:
space:
mode:
authorLv Zheng <lv.zheng@intel.com>2014-04-04 06:38:50 +0200
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>2014-04-20 22:59:39 +0200
commiteb0c65bd2c276b4b346db545d938d4113e1a4e9c (patch)
tree9e08a70553f2f9d459eacf4491e45874e7b79669 /drivers/acpi
parentACPICA: Tables: Clean up split INSTALLED/VALIDATED table state logics. (diff)
downloadlinux-eb0c65bd2c276b4b346db545d938d4113e1a4e9c.tar.xz
linux-eb0c65bd2c276b4b346db545d938d4113e1a4e9c.zip
ACPICA: Tables: Fix unbalanced table validations.
As acpi_tb_validate_table() returns failure on checksum verification without doing invalidatation, all its invocations that are not done to a descriptor stored in acpi_gbl_root_table_list are checked and balanced. But this is not a real issue as the descritors that have been passed to acpi_tb_add_table() are all virtual address tables and the validations are in fact no-op. The cleanup can ensure that any future extensions made on acpi_tb_add_table() to allow it to be invoked with physical address tables will not trigger memory leakage regressions. Signed-off-by: Lv Zheng <lv.zheng@intel.com> Signed-off-by: Bob Moore <robert.moore@intel.com> [rjw: Subject] Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Diffstat (limited to 'drivers/acpi')
-rw-r--r--drivers/acpi/acpica/tbinstal.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/acpi/acpica/tbinstal.c b/drivers/acpi/acpica/tbinstal.c
index 93a99ef03425..d3e1db225cb2 100644
--- a/drivers/acpi/acpica/tbinstal.c
+++ b/drivers/acpi/acpica/tbinstal.c
@@ -236,6 +236,7 @@ acpi_tb_add_table(struct acpi_table_desc *table_desc, u32 *table_index)
if (!table_desc->pointer) {
status = acpi_tb_validate_table(table_desc);
if (ACPI_FAILURE(status) || !table_desc->pointer) {
+ acpi_tb_invalidate_table(table_desc);
return_ACPI_STATUS(status);
}
}