diff options
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 2a9a561c2f01..64750ee96e20 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, | |||
584 | * want make the objects permanent. | 584 | * want make the objects permanent. |
585 | */ | 585 | */ |
586 | if (!(method_desc->method.flags & AOPOBJ_MODULE_LEVEL)) { | 586 | if (!(method_desc->method.flags & AOPOBJ_MODULE_LEVEL)) { |
587 | acpi_ns_delete_namespace_by_owner(method_desc->method. | 587 | |
588 | owner_id); | 588 | /* Delete any direct children of (created by) this method */ |
589 | |||
590 | acpi_ns_delete_namespace_subtree(walk_state-> | ||
591 | method_node); | ||
592 | |||
593 | /* | ||
594 | * Delete any objects that were created by this method | ||
595 | * elsewhere in the namespace (if any were created). | ||
596 | */ | ||
597 | if (method_desc->method. | ||
598 | flags & AOPOBJ_MODIFIED_NAMESPACE) { | ||
599 | acpi_ns_delete_namespace_by_owner(method_desc-> | ||
600 | method. | ||
601 | owner_id); | ||
602 | } | ||
589 | } | 603 | } |
590 | } | 604 | } |
591 | 605 | ||
@@ -605,7 +619,7 @@ acpi_ds_terminate_control_method(union acpi_operand_object *method_desc, | |||
605 | * we immediately reuse it for the next thread executing this method | 619 | * we immediately reuse it for the next thread executing this method |
606 | */ | 620 | */ |
607 | ACPI_DEBUG_PRINT((ACPI_DB_DISPATCH, | 621 | ACPI_DEBUG_PRINT((ACPI_DB_DISPATCH, |
608 | "*** Completed execution of one thread, %d threads remaining\n", | 622 | "*** Completed execution of one thread, %u threads remaining\n", |
609 | method_desc->method.thread_count)); | 623 | method_desc->method.thread_count)); |
610 | } else { | 624 | } else { |
611 | /* This is the only executing thread for this method */ | 625 | /* This is the only executing thread for this method */ |