• L
    ACPICA: Tables: Fix the issues in handling virtual addressed tables. · dc156adf
    Lv Zheng 提交于
    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: NLv Zheng <lv.zheng@intel.com>
    Signed-off-by: NBob Moore <robert.moore@intel.com>
    Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
    dc156adf
tbutils.c 19.1 KB