diff options
Diffstat (limited to 'source/components/dispatcher')
| -rw-r--r-- | source/components/dispatcher/dsmethod.c | 14 | ||||
| -rw-r--r-- | source/components/dispatcher/dswexec.c | 3 | ||||
| -rw-r--r-- | source/components/dispatcher/dswload2.c | 8 |
3 files changed, 16 insertions, 9 deletions
diff --git a/source/components/dispatcher/dsmethod.c b/source/components/dispatcher/dsmethod.c index 334dadcac664..4c4ff2270127 100644 --- a/source/components/dispatcher/dsmethod.c +++ b/source/components/dispatcher/dsmethod.c @@ -107,12 +107,15 @@ AcpiDsAutoSerializeMethod ( "Method auto-serialization parse [%4.4s] %p\n", AcpiUtGetNodeName (Node), Node)); + AcpiExEnterInterpreter (); + /* Create/Init a root op for the method parse tree */ Op = AcpiPsAllocOp (AML_METHOD_OP, ObjDesc->Method.AmlStart); if (!Op) { - return_ACPI_STATUS (AE_NO_MEMORY); + Status = AE_NO_MEMORY; + goto Unlock; } AcpiPsSetName (Op, Node->Name.Integer); @@ -124,7 +127,8 @@ AcpiDsAutoSerializeMethod ( if (!WalkState) { AcpiPsFreeOp (Op); - return_ACPI_STATUS (AE_NO_MEMORY); + Status = AE_NO_MEMORY; + goto Unlock; } Status = AcpiDsInitAmlWalk (WalkState, Op, Node, @@ -143,6 +147,8 @@ AcpiDsAutoSerializeMethod ( Status = AcpiPsParseAml (WalkState); AcpiPsDeleteParseTree (Op); +Unlock: + AcpiExExitInterpreter (); return_ACPI_STATUS (Status); } @@ -810,7 +816,9 @@ AcpiDsTerminateControlMethod ( { /* Delete any direct children of (created by) this method */ + (void) AcpiExExitInterpreter (); AcpiNsDeleteNamespaceSubtree (WalkState->MethodNode); + (void) AcpiExEnterInterpreter (); /* * Delete any objects that were created by this method @@ -821,7 +829,9 @@ AcpiDsTerminateControlMethod ( */ if (MethodDesc->Method.InfoFlags & ACPI_METHOD_MODIFIED_NAMESPACE) { + (void) AcpiExExitInterpreter (); AcpiNsDeleteNamespaceByOwner (MethodDesc->Method.OwnerId); + (void) AcpiExEnterInterpreter (); MethodDesc->Method.InfoFlags &= ~ACPI_METHOD_MODIFIED_NAMESPACE; } diff --git a/source/components/dispatcher/dswexec.c b/source/components/dispatcher/dswexec.c index 307af607a843..e284fca5d957 100644 --- a/source/components/dispatcher/dswexec.c +++ b/source/components/dispatcher/dswexec.c @@ -144,7 +144,8 @@ AcpiDsGetPredicateValue ( * Result of predicate evaluation must be an Integer * object. Implicitly convert the argument if necessary. */ - Status = AcpiExConvertToInteger (ObjDesc, &LocalObjDesc, 16); + Status = AcpiExConvertToInteger (ObjDesc, &LocalObjDesc, + ACPI_STRTOUL_BASE16); if (ACPI_FAILURE (Status)) { goto Cleanup; diff --git a/source/components/dispatcher/dswload2.c b/source/components/dispatcher/dswload2.c index 2c099ef0f035..ae076e2587ca 100644 --- a/source/components/dispatcher/dswload2.c +++ b/source/components/dispatcher/dswload2.c @@ -624,16 +624,12 @@ AcpiDsLoad2EndOp ( { return_ACPI_STATUS (Status); } - - AcpiExExitInterpreter (); } + AcpiExExitInterpreter (); Status = AcpiEvInitializeRegion ( AcpiNsGetAttachedObject (Node), FALSE); - if (WalkState->MethodNode) - { - AcpiExEnterInterpreter (); - } + AcpiExEnterInterpreter (); if (ACPI_FAILURE (Status)) { |
