ACPICA: AML Parser: skip opcodes that open a scope upon parse failure
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>
This commit is contained in:
parent
089b2bec97
commit
4a7c94c721
|
@ -22,6 +22,7 @@
|
|||
#include "acdispat.h"
|
||||
#include "amlcode.h"
|
||||
#include "acconvert.h"
|
||||
#include "acnamesp.h"
|
||||
|
||||
#define _COMPONENT ACPI_PARSER
|
||||
ACPI_MODULE_NAME("psloop")
|
||||
|
@ -527,12 +528,18 @@ 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 =
|
||||
|
@ -540,8 +547,6 @@ acpi_status acpi_ps_parse_loop(struct acpi_walk_state *walk_state)
|
|||
(&walk_state->parser_state);
|
||||
walk_state->aml =
|
||||
walk_state->parser_state.aml;
|
||||
ACPI_ERROR((AE_INFO,
|
||||
"Skipping Scope block"));
|
||||
}
|
||||
|
||||
continue;
|
||||
|
|
Loading…
Reference in New Issue