diff options
Diffstat (limited to 'drivers/acpi/dispatcher/dsmethod.c')
| -rw-r--r-- | drivers/acpi/dispatcher/dsmethod.c | 23 |
1 files changed, 4 insertions, 19 deletions
diff --git a/drivers/acpi/dispatcher/dsmethod.c b/drivers/acpi/dispatcher/dsmethod.c index a39a33f4847a..cf888add3191 100644 --- a/drivers/acpi/dispatcher/dsmethod.c +++ b/drivers/acpi/dispatcher/dsmethod.c | |||
| @@ -134,7 +134,7 @@ acpi_ds_create_method_mutex(union acpi_operand_object *method_desc) | |||
| 134 | union acpi_operand_object *mutex_desc; | 134 | union acpi_operand_object *mutex_desc; |
| 135 | acpi_status status; | 135 | acpi_status status; |
| 136 | 136 | ||
| 137 | ACPI_FUNCTION_NAME(ds_create_method_mutex); | 137 | ACPI_FUNCTION_TRACE(ds_create_method_mutex); |
| 138 | 138 | ||
| 139 | /* Create the new mutex object */ | 139 | /* Create the new mutex object */ |
| 140 | 140 | ||
| @@ -493,7 +493,7 @@ acpi_ds_restart_control_method(struct acpi_walk_state *walk_state, | |||
| 493 | 493 | ||
| 494 | ACPI_DEBUG_PRINT((ACPI_DB_DISPATCH, | 494 | ACPI_DEBUG_PRINT((ACPI_DB_DISPATCH, |
| 495 | "****Restart [%4.4s] Op %p ReturnValueFromCallee %p\n", | 495 | "****Restart [%4.4s] Op %p ReturnValueFromCallee %p\n", |
| 496 | (char *)&walk_state->method_node->name, | 496 | acpi_ut_get_node_name(walk_state->method_node), |
| 497 | walk_state->method_call_op, return_desc)); | 497 | walk_state->method_call_op, return_desc)); |
| 498 | 498 | ||
| 499 | ACPI_DEBUG_PRINT((ACPI_DB_DISPATCH, | 499 | ACPI_DEBUG_PRINT((ACPI_DB_DISPATCH, |
| @@ -610,6 +610,7 @@ acpi_ds_terminate_control_method(union acpi_operand_object *method_desc, | |||
| 610 | 610 | ||
| 611 | acpi_os_release_mutex(method_desc->method.mutex->mutex. | 611 | acpi_os_release_mutex(method_desc->method.mutex->mutex. |
| 612 | os_mutex); | 612 | os_mutex); |
| 613 | method_desc->method.mutex->mutex.owner_thread = NULL; | ||
| 613 | } | 614 | } |
| 614 | } | 615 | } |
| 615 | 616 | ||
| @@ -620,27 +621,11 @@ acpi_ds_terminate_control_method(union acpi_operand_object *method_desc, | |||
| 620 | */ | 621 | */ |
| 621 | method_node = walk_state->method_node; | 622 | method_node = walk_state->method_node; |
| 622 | 623 | ||
| 623 | /* Lock namespace for possible update */ | ||
| 624 | |||
| 625 | status = acpi_ut_acquire_mutex(ACPI_MTX_NAMESPACE); | ||
| 626 | if (ACPI_FAILURE(status)) { | ||
| 627 | return_VOID; | ||
| 628 | } | ||
| 629 | |||
| 630 | /* | ||
| 631 | * Delete any namespace entries created immediately underneath | ||
| 632 | * the method | ||
| 633 | */ | ||
| 634 | if (method_node && method_node->child) { | ||
| 635 | acpi_ns_delete_namespace_subtree(method_node); | ||
| 636 | } | ||
| 637 | |||
| 638 | /* | 624 | /* |
| 639 | * Delete any namespace entries created anywhere else within | 625 | * Delete any namespace objects created anywhere within |
| 640 | * the namespace by the execution of this method | 626 | * the namespace by the execution of this method |
| 641 | */ | 627 | */ |
| 642 | acpi_ns_delete_namespace_by_owner(method_desc->method.owner_id); | 628 | acpi_ns_delete_namespace_by_owner(method_desc->method.owner_id); |
| 643 | status = acpi_ut_release_mutex(ACPI_MTX_NAMESPACE); | ||
| 644 | } | 629 | } |
| 645 | 630 | ||
| 646 | /* Decrement the thread count on the method */ | 631 | /* Decrement the thread count on the method */ |
