• Lv Zheng's avatar
    ACPICA: Tables: Fix multiple ACPI_FREE()s around acpi_tb_add_table(). · 55df23f0
    Lv Zheng authored
    Currently there are following issues in acpi_tb_add_table():
    Following logic is currently correct:
    1. When a table is allocated in acpi_ex_load_op(), if a reloading happens,
       the allocated memory is freed by acpi_tb_add_table() and AE_OK is
       returned to the caller to avoid the caller to free it again.
    Following logic is currently incorrect:
    1. When a table is allocated in acpi_ex_load_op() or by the
       acpi_load_table() caller, if the table is already loaded, there will be
       twice ACPI_FREE() called for the same pointer when acpi_tb_add_table()
       returns AE_ALREADY_EXISTS.
    
    This patch only fixes the above incorrect logic in acpi_tb_add_table():
    1. Only invoke acpi_tb_delete_table() if AE_OK is going to be returned.
    2. After doing so, we do not invoke ACPI_FREE() when returning AE_OK;
    Signed-off-by: default avatarLv Zheng <lv.zheng@intel.com>
    Signed-off-by: default avatarBob Moore <robert.moore@intel.com>
    [rjw: Subject]
    Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
    55df23f0
exconfig.c 18.3 KB