summaryrefslogtreecommitdiff
path: root/drivers/acpi/acpica/dsmethod.c
diff options
context:
space:
mode:
authorLen Brown <len.brown@intel.com>2009-09-19 09:45:22 +0400
committerLen Brown <len.brown@intel.com>2009-09-19 09:45:22 +0400
commit985f38781d19101aba121df423f92c87b208c6df (patch)
tree21b10413b6e24c0eaf5c3b2432e936749a672644 /drivers/acpi/acpica/dsmethod.c
parentd093d70a81b08673d1577ad73419998f02be9d29 (diff)
parentc9766237afa92e8d7f27bbcd4964f1b43fa0bce8 (diff)
downloadlinux-985f38781d19101aba121df423f92c87b208c6df.tar.xz
Merge branch 'acpica' into release
Diffstat (limited to 'drivers/acpi/acpica/dsmethod.c')
-rw-r--r--drivers/acpi/acpica/dsmethod.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/drivers/acpi/acpica/dsmethod.c b/drivers/acpi/acpica/dsmethod.c
index 14b8b8ed8023..567a4899a018 100644
--- a/drivers/acpi/acpica/dsmethod.c
+++ b/drivers/acpi/acpica/dsmethod.c
@@ -578,10 +578,15 @@ acpi_ds_terminate_control_method(union acpi_operand_object *method_desc,
}
/*
- * 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.
*/
- acpi_ns_delete_namespace_by_owner(method_desc->method.owner_id);
+ if (!(method_desc->method.flags & AOPOBJ_MODULE_LEVEL)) {
+ acpi_ns_delete_namespace_by_owner(method_desc->method.
+ owner_id);
+ }
}
/* Decrement the thread count on the method */
@@ -622,7 +627,9 @@ acpi_ds_terminate_control_method(union acpi_operand_object *method_desc,
/* No more threads, we can free the owner_id */
- acpi_ut_release_owner_id(&method_desc->method.owner_id);
+ if (!(method_desc->method.flags & AOPOBJ_MODULE_LEVEL)) {
+ acpi_ut_release_owner_id(&method_desc->method.owner_id);
+ }
}
return_VOID;