aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/acpi/dispatcher/dsmethod.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/acpi/dispatcher/dsmethod.c')
-rw-r--r--drivers/acpi/dispatcher/dsmethod.c38
1 files changed, 17 insertions, 21 deletions
diff --git a/drivers/acpi/dispatcher/dsmethod.c b/drivers/acpi/dispatcher/dsmethod.c
index 3db651c7f582..7a99740248c7 100644
--- a/drivers/acpi/dispatcher/dsmethod.c
+++ b/drivers/acpi/dispatcher/dsmethod.c
@@ -42,7 +42,6 @@
42 */ 42 */
43 43
44#include <acpi/acpi.h> 44#include <acpi/acpi.h>
45#include <acpi/acparser.h>
46#include <acpi/amlcode.h> 45#include <acpi/amlcode.h>
47#include <acpi/acdispat.h> 46#include <acpi/acdispat.h>
48#include <acpi/acinterp.h> 47#include <acpi/acinterp.h>
@@ -102,7 +101,7 @@ acpi_ds_method_error(acpi_status status, struct acpi_walk_state *walk_state)
102 walk_state->opcode, 101 walk_state->opcode,
103 walk_state->aml_offset, 102 walk_state->aml_offset,
104 NULL); 103 NULL);
105 (void)acpi_ex_enter_interpreter(); 104 acpi_ex_enter_interpreter();
106 } 105 }
107#ifdef ACPI_DISASSEMBLER 106#ifdef ACPI_DISASSEMBLER
108 if (ACPI_FAILURE(status)) { 107 if (ACPI_FAILURE(status)) {
@@ -535,7 +534,6 @@ void
535acpi_ds_terminate_control_method(union acpi_operand_object *method_desc, 534acpi_ds_terminate_control_method(union acpi_operand_object *method_desc,
536 struct acpi_walk_state *walk_state) 535 struct acpi_walk_state *walk_state)
537{ 536{
538 acpi_status status;
539 537
540 ACPI_FUNCTION_TRACE_PTR(ds_terminate_control_method, walk_state); 538 ACPI_FUNCTION_TRACE_PTR(ds_terminate_control_method, walk_state);
541 539
@@ -550,29 +548,27 @@ acpi_ds_terminate_control_method(union acpi_operand_object *method_desc,
550 /* Delete all arguments and locals */ 548 /* Delete all arguments and locals */
551 549
552 acpi_ds_method_data_delete_all(walk_state); 550 acpi_ds_method_data_delete_all(walk_state);
553 }
554 551
555 /* 552 /*
556 * If method is serialized, release the mutex and restore the 553 * If method is serialized, release the mutex and restore the
557 * current sync level for this thread 554 * current sync level for this thread
558 */ 555 */
559 if (method_desc->method.mutex) { 556 if (method_desc->method.mutex) {
560 557
561 /* Acquisition Depth handles recursive calls */ 558 /* Acquisition Depth handles recursive calls */
562 559
563 method_desc->method.mutex->mutex.acquisition_depth--; 560 method_desc->method.mutex->mutex.acquisition_depth--;
564 if (!method_desc->method.mutex->mutex.acquisition_depth) { 561 if (!method_desc->method.mutex->mutex.acquisition_depth) {
565 walk_state->thread->current_sync_level = 562 walk_state->thread->current_sync_level =
566 method_desc->method.mutex->mutex. 563 method_desc->method.mutex->mutex.
567 original_sync_level; 564 original_sync_level;
568 565
569 acpi_os_release_mutex(method_desc->method.mutex->mutex. 566 acpi_os_release_mutex(method_desc->method.
570 os_mutex); 567 mutex->mutex.os_mutex);
571 method_desc->method.mutex->mutex.thread_id = 0; 568 method_desc->method.mutex->mutex.thread_id = 0;
569 }
572 } 570 }
573 }
574 571
575 if (walk_state) {
576 /* 572 /*
577 * Delete any namespace objects created anywhere within 573 * Delete any namespace objects created anywhere within
578 * the namespace by the execution of this method 574 * the namespace by the execution of this method
@@ -613,7 +609,7 @@ acpi_ds_terminate_control_method(union acpi_operand_object *method_desc,
613 */ 609 */
614 if ((method_desc->method.method_flags & AML_METHOD_SERIALIZED) 610 if ((method_desc->method.method_flags & AML_METHOD_SERIALIZED)
615 && (!method_desc->method.mutex)) { 611 && (!method_desc->method.mutex)) {
616 status = acpi_ds_create_method_mutex(method_desc); 612 (void)acpi_ds_create_method_mutex(method_desc);
617 } 613 }
618 614
619 /* No more threads, we can free the owner_id */ 615 /* No more threads, we can free the owner_id */