summaryrefslogtreecommitdiff
path: root/source/compiler/aslmethod.c
diff options
context:
space:
mode:
Diffstat (limited to 'source/compiler/aslmethod.c')
-rw-r--r--source/compiler/aslmethod.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/source/compiler/aslmethod.c b/source/compiler/aslmethod.c
index d56f4817c9ef..ff6fd474193d 100644
--- a/source/compiler/aslmethod.c
+++ b/source/compiler/aslmethod.c
@@ -724,7 +724,7 @@ MtCheckNamedObjectInMethod (
}
OpInfo = AcpiPsGetOpcodeInfo (Op->Asl.AmlOpcode);
- if (OpInfo->Class == AML_CLASS_NAMED_OBJECT)
+ if ((OpInfo->Class == AML_CLASS_NAMED_OBJECT) && (Op->Asl.AmlOpcode != AML_FIELD_OP))
{
/*
* 1) Mark the method as a method that creates named objects.
@@ -739,6 +739,9 @@ MtCheckNamedObjectInMethod (
* Reason: If a thread blocks within the method for any reason, and
* another thread enters the method, the method will fail because
* an attempt will be made to create the same object twice.
+ *
+ * Note: The Field opcode is disallowed here because Field() does not
+ * create a new named object.
*/
ExternalPath = AcpiNsGetNormalizedPathname (MethodInfo->Op->Asl.Node, TRUE);