Skip to content

Commit

Permalink
ACPICA: AML Parser: skip opcodes that open a scope upon parse failure
Browse files Browse the repository at this point in the history
This change skips the entire length of opcodes that open a scope
(Device, Scope, Processor, etc) if the creation of the op fails. The
failure could be caused by various errors including AE_ALREADY_EXISTS
and AE_NOT_FOUND.

Reported-by: Jeremy Linton <jeremy.linton@arm.com>
Tested-by: Jeremy Linton <jeremy.linton@arm.com>
Signed-off-by: Erik Schmauss <erik.schmauss@intel.com>
Cc: 4.17+ <stable@vger.kernel.org> # 4.17+
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
  • Loading branch information
Erik Schmauss authored and Rafael J. Wysocki committed Aug 14, 2018
1 parent 089b2be commit 4a7c94c
Showing 1 changed file with 11 additions and 6 deletions.
17 changes: 11 additions & 6 deletions drivers/acpi/acpica/psloop.c
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
#include "acdispat.h"
#include "amlcode.h"
#include "acconvert.h"
#include "acnamesp.h"

#define _COMPONENT ACPI_PARSER
ACPI_MODULE_NAME("psloop")
Expand Down Expand Up @@ -527,21 +528,25 @@ acpi_status acpi_ps_parse_loop(struct acpi_walk_state *walk_state)
if (ACPI_FAILURE(status)) {
return_ACPI_STATUS(status);
}
if (walk_state->opcode == AML_SCOPE_OP) {
if (acpi_ns_opens_scope
(acpi_ps_get_opcode_info
(walk_state->opcode)->object_type)) {
/*
* If the scope op fails to parse, skip the body of the
* scope op because the parse failure indicates that the
* device may not exist.
* If the scope/device op fails to parse, skip the body of
* the scope op because the parse failure indicates that
* the device may not exist.
*/
ACPI_ERROR((AE_INFO,
"Skip parsing opcode %s",
acpi_ps_get_opcode_name
(walk_state->opcode)));
walk_state->parser_state.aml =
walk_state->aml + 1;
walk_state->parser_state.aml =
acpi_ps_get_next_package_end
(&walk_state->parser_state);
walk_state->aml =
walk_state->parser_state.aml;
ACPI_ERROR((AE_INFO,
"Skipping Scope block"));
}

continue;
Expand Down

0 comments on commit 4a7c94c

Please sign in to comment.