ACPICA: Disassembler: prevent external op's from opening a new scope
authorErik Schmauss <erik.schmauss@intel.com>
Mon, 5 Jun 2017 08:41:43 +0000 (16:41 +0800)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Tue, 27 Jun 2017 20:25:24 +0000 (22:25 +0200)
ACPICA commit c512c2bfcce65b8e8f37d549ac2fa4a1e0182e46

Since Externals could be of ACPI_TYPE_METHOD, there is a possibility
that the acpi_ns_lookup may cause a new scope to be opened. Therefore,
disable opening the scope for all acpi_ns_lookup invocations that deal
with externals.

Link: https://github.com/acpica/acpica/commit/c512c2bf
Signed-off-by: Erik Schmauss <erik.schmauss@intel.com>
Signed-off-by: Bob Moore <robert.moore@intel.com>
Signed-off-by: Lv Zheng <lv.zheng@intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/acpi/acpica/dswload2.c

index 8d510c7e20c89f43908586eecb3f998f6e435a5e..ab5d318975f4d5e4d4ee53fb7b63667a59751820 100644 (file)
@@ -310,6 +310,16 @@ acpi_ds_load2_begin_op(struct acpi_walk_state *walk_state,
                                flags |= ACPI_NS_TEMPORARY;
                        }
                }
+#ifdef ACPI_ASL_COMPILER
+
+               /*
+                * Do not open a scope. This could be an external method
+                * and open a scope.
+                */
+               if (walk_state->opcode == AML_EXTERNAL_OP) {
+                       flags |= ACPI_NS_DONT_OPEN_SCOPE;
+               }
+#endif
 
                /* Add new entry or lookup existing entry */