summaryrefslogtreecommitdiffstats
path: root/dispatcher/dsmethod.c
diff options
context:
space:
mode:
authorjkim <jkim@FreeBSD.org>2009-07-31 15:25:39 +0000
committerjkim <jkim@FreeBSD.org>2009-07-31 15:25:39 +0000
commit69f0585e848b352bf2bac67a62c191d4c5d8b95d (patch)
tree32bcfd605fd3c4a48e9916a628a843d3a6c1e218 /dispatcher/dsmethod.c
parentb0288ab5352e77c07fffaf51a4193f8de02a7aec (diff)
downloadFreeBSD-src-69f0585e848b352bf2bac67a62c191d4c5d8b95d.zip
FreeBSD-src-69f0585e848b352bf2bac67a62c191d4c5d8b95d.tar.gz
Import ACPICA 20090730
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