On Fri, Aug 10, 2018 at 11:45 PM Erik Schmauss <erik.schmauss@xxxxxxxxx> wrote: > > 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@xxxxxxx> > Tested-by: Jeremy Linton <jeremy.linton@xxxxxxx> > Signed-off-by: Erik Schmauss <erik.schmauss@xxxxxxxxx> I think that we should propagate this fix to the "stable" kernel series, at least 4.17.y and newer. Do you agree? > --- > drivers/acpi/acpica/psloop.c | 17 +++++++++++------ > 1 file changed, 11 insertions(+), 6 deletions(-) > > diff --git a/drivers/acpi/acpica/psloop.c b/drivers/acpi/acpica/psloop.c > index 20b6142da183..358fcdd1f8a5 100644 > --- a/drivers/acpi/acpica/psloop.c > +++ b/drivers/acpi/acpica/psloop.c > @@ -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; > -- > 2.17.1 >