diff options
Diffstat (limited to 'drivers/acpi/acpica/tbutils.c')
-rw-r--r-- | drivers/acpi/acpica/tbutils.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/drivers/acpi/acpica/tbutils.c b/drivers/acpi/acpica/tbutils.c index 9b6992d8578f..c61432fa4332 100644 --- a/drivers/acpi/acpica/tbutils.c +++ b/drivers/acpi/acpica/tbutils.c | |||
@@ -178,7 +178,7 @@ struct acpi_table_header *acpi_tb_copy_dsdt(u32 table_index) | |||
178 | } | 178 | } |
179 | 179 | ||
180 | ACPI_MEMCPY(new_table, table_desc->pointer, table_desc->length); | 180 | ACPI_MEMCPY(new_table, table_desc->pointer, table_desc->length); |
181 | acpi_tb_delete_table(table_desc); | 181 | acpi_tb_uninstall_table(table_desc); |
182 | table_desc->address = ACPI_PTR_TO_PHYSADDR(new_table); | 182 | table_desc->address = ACPI_PTR_TO_PHYSADDR(new_table); |
183 | table_desc->pointer = new_table; | 183 | table_desc->pointer = new_table; |
184 | table_desc->flags = ACPI_TABLE_ORIGIN_ALLOCATED; | 184 | table_desc->flags = ACPI_TABLE_ORIGIN_ALLOCATED; |
@@ -268,7 +268,7 @@ acpi_tb_install_table(acpi_physical_address address, | |||
268 | * fully mapped later (in verify table). In any case, we must | 268 | * fully mapped later (in verify table). In any case, we must |
269 | * unmap the header that was mapped above. | 269 | * unmap the header that was mapped above. |
270 | */ | 270 | */ |
271 | final_table = acpi_tb_table_override(table, table_desc); | 271 | final_table = acpi_tb_override_table(table, table_desc); |
272 | if (!final_table) { | 272 | if (!final_table) { |
273 | final_table = table; /* There was no override */ | 273 | final_table = table; /* There was no override */ |
274 | } | 274 | } |
@@ -290,7 +290,12 @@ acpi_tb_install_table(acpi_physical_address address, | |||
290 | * flag set and will not be deleted below. | 290 | * flag set and will not be deleted below. |
291 | */ | 291 | */ |
292 | if (final_table != table) { | 292 | if (final_table != table) { |
293 | acpi_tb_delete_table(table_desc); | 293 | /* |
294 | * Table is in "INSTALLED" state, the final_table pointer is not | ||
295 | * maintained in the root table list. | ||
296 | */ | ||
297 | acpi_tb_release_table(final_table, table_desc->length, | ||
298 | table_desc->flags); | ||
294 | } | 299 | } |
295 | 300 | ||
296 | unmap_and_exit: | 301 | unmap_and_exit: |