ACPICA: Disassembler: ignore AE_ALREADY_EXISTS status when parsing create operators
authorErik Kaneda <erik.kaneda@intel.com>
Tue, 5 May 2020 00:46:51 +0000 (17:46 -0700)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Sat, 9 May 2020 08:55:54 +0000 (10:55 +0200)
ACPICA commit cd66d0a50fdc9cc4dcd998e08e7aa3c4154bea2d

Disassembler is intended to emit existing ASL code as-is. Therefore,
error messages emitted during disassembly should be ignored or
handled in a way such that the disassembler can continue to parse the
AML. This change ignores AE_ALREADY_EXISTS errors during the deferred
Op parsing for create operators in order to complete parsing ASL
termlists.

Link: https://github.com/acpica/acpica/commit/cd66d0a5
Signed-off-by: Erik Kaneda <erik.kaneda@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/dsfield.c

index c901f5a..0189b5d 100644 (file)
@@ -177,7 +177,10 @@ acpi_ds_create_buffer_field(union acpi_parse_object *op,
                                        arg->common.value.string, ACPI_TYPE_ANY,
                                        ACPI_IMODE_LOAD_PASS1, flags,
                                        walk_state, &node);
-               if (ACPI_FAILURE(status)) {
+               if ((walk_state->parse_flags & ACPI_PARSE_DISASSEMBLE)
+                   && status == AE_ALREADY_EXISTS) {
+                       status = AE_OK;
+               } else if (ACPI_FAILURE(status)) {
                        ACPI_ERROR_NAMESPACE(walk_state->scope_info,
                                             arg->common.value.string, status);
                        return_ACPI_STATUS(status);