> -----Original Message----- > From: Rafael J. Wysocki [mailto:rafael@xxxxxxxxxx] > Sent: Sunday, August 12, 2018 2:47 AM > To: Schmauss, Erik <erik.schmauss@xxxxxxxxx> > Cc: ACPI Devel Maling List <linux-acpi@xxxxxxxxxxxxxxx>; Rafael J. Wysocki > <rjw@xxxxxxxxxxxxx> > Subject: Re: [PATCH 05/11] ACPICA: AML Parser: skip opcodes that open a scope > upon parse failure > > 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? Yes, I agree. Hi Greg, please add this to the stable kernel > > > --- > > 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 > >