diff options
author | Len Brown <len.brown@intel.com> | 2010-08-15 00:25:40 -0400 |
---|---|---|
committer | Len Brown <len.brown@intel.com> | 2010-08-15 00:25:40 -0400 |
commit | c172cb73bc79fe69915b1a1a48e374aa4b1f8a59 (patch) | |
tree | eb3d6415914968441c063f7282e824b14b5a5edb /drivers/acpi/acpica/dsmethod.c | |
parent | e8eb6228094bcf0c84d9aa32b6363e78da68e1f5 (diff) | |
parent | 28f4f8a9def2b1f3a6066bae791c77043ec49524 (diff) | |
download | kernel_samsung_smdk4412-c172cb73bc79fe69915b1a1a48e374aa4b1f8a59.zip kernel_samsung_smdk4412-c172cb73bc79fe69915b1a1a48e374aa4b1f8a59.tar.gz kernel_samsung_smdk4412-c172cb73bc79fe69915b1a1a48e374aa4b1f8a59.tar.bz2 |
Merge branch 'acpica-gpe' into release
Diffstat (limited to 'drivers/acpi/acpica/dsmethod.c')
-rw-r--r-- | drivers/acpi/acpica/dsmethod.c | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/drivers/acpi/acpica/dsmethod.c b/drivers/acpi/acpica/dsmethod.c index 2a9a561..64750ee 100644 --- a/drivers/acpi/acpica/dsmethod.c +++ b/drivers/acpi/acpica/dsmethod.c @@ -584,8 +584,22 @@ acpi_ds_terminate_control_method(union acpi_operand_object *method_desc, * want make the objects permanent. */ if (!(method_desc->method.flags & AOPOBJ_MODULE_LEVEL)) { - acpi_ns_delete_namespace_by_owner(method_desc->method. - owner_id); + + /* Delete any direct children of (created by) this method */ + + acpi_ns_delete_namespace_subtree(walk_state-> + method_node); + + /* + * Delete any objects that were created by this method + * elsewhere in the namespace (if any were created). + */ + if (method_desc->method. + flags & AOPOBJ_MODIFIED_NAMESPACE) { + acpi_ns_delete_namespace_by_owner(method_desc-> + method. + owner_id); + } } } @@ -605,7 +619,7 @@ acpi_ds_terminate_control_method(union acpi_operand_object *method_desc, * we immediately reuse it for the next thread executing this method */ ACPI_DEBUG_PRINT((ACPI_DB_DISPATCH, - "*** Completed execution of one thread, %d threads remaining\n", + "*** Completed execution of one thread, %u threads remaining\n", method_desc->method.thread_count)); } else { /* This is the only executing thread for this method */ |