ACPICA: Tables: Fix the issues in handling virtual addressed tables.
authorLv Zheng <lv.zheng@intel.com>
Fri, 4 Apr 2014 04:38:26 +0000 (12:38 +0800)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Sun, 20 Apr 2014 20:59:38 +0000 (22:59 +0200)
commitdc156adf0d1b9d9ea54a86ca803ac5202ab139c7
treefd87853be65ce947c2f3aa01b3dfec7743a9f031
parent5582982d1acefe37528a3de8b42e81a7b0a75cfb
ACPICA: Tables: Fix the issues in handling virtual addressed tables.

When table is overridden or reloaded, acpi_tb_delete_table() is called where
struct acpi_table_desc.Pointer will be NULL.  It thus is impossible for virtual
addressed tables to obtain the .Pointer again in acpi_tb_verify_table().

This patch stores virtual table addresses  (ACPI_TABLE_ORIGIN_ALLOCATED,
ACPI_TABLE_ORIGIN_UNKNOWN, ACPI_TABLE_ORIGIN_OVERRIDE) in the
struct acpi_table_desc.Address field and refills the struct acpi_table_desc.Pointer
using these addresses in acpi_tb_verify_table(). Note that if a table with
ACPI_TABLE_ORIGIN_ALLOCATED set is actually freed, the .Address field
should be invalidated and thus must be replaced with NULL to avoid wrong
future validations occuring in acpi_tb_verify_table().

Signed-off-by: Lv Zheng <lv.zheng@intel.com>
Signed-off-by: Bob Moore <robert.moore@intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/acpi/acpica/exconfig.c
drivers/acpi/acpica/tbinstal.c
drivers/acpi/acpica/tbutils.c