ACPICA: Tables: Fix unbalanced table validations.
authorLv Zheng <lv.zheng@intel.com>
Fri, 4 Apr 2014 04:38:50 +0000 (12:38 +0800)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Sun, 20 Apr 2014 20:59:39 +0000 (22:59 +0200)
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>
drivers/acpi/acpica/tbinstal.c

index 93a99ef0342584920422c191fd684150f061a822..d3e1db225cb2d1ecdb10a6180b98e6aaef761c49 100644 (file)
@@ -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);
                }
        }