summaryrefslogtreecommitdiffstats
path: root/dispatcher/dsmethod.c
diff options
context:
space:
mode:
Diffstat (limited to 'dispatcher/dsmethod.c')
-rw-r--r--dispatcher/dsmethod.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/dispatcher/dsmethod.c b/dispatcher/dsmethod.c
index d4127fd..1766fc3 100644
--- a/dispatcher/dsmethod.c
+++ b/dispatcher/dsmethod.c
@@ -693,10 +693,15 @@ AcpiDsTerminateControlMethod (
}
/*
- * Delete any namespace objects created anywhere within
- * the namespace by the execution of this method
+ * Delete any namespace objects created anywhere within the
+ * namespace by the execution of this method. Unless this method
+ * is a module-level executable code method, in which case we
+ * want make the objects permanent.
*/
- AcpiNsDeleteNamespaceByOwner (MethodDesc->Method.OwnerId);
+ if (!(MethodDesc->Method.Flags & AOPOBJ_MODULE_LEVEL))
+ {
+ AcpiNsDeleteNamespaceByOwner (MethodDesc->Method.OwnerId);
+ }
}
/* Decrement the thread count on the method */
@@ -745,7 +750,10 @@ AcpiDsTerminateControlMethod (
/* No more threads, we can free the OwnerId */
- AcpiUtReleaseOwnerId (&MethodDesc->Method.OwnerId);
+ if (!(MethodDesc->Method.Flags & AOPOBJ_MODULE_LEVEL))
+ {
+ AcpiUtReleaseOwnerId (&MethodDesc->Method.OwnerId);
+ }
}
return_VOID;
OpenPOWER on IntegriCloud