aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/acpi/parser/psparse.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/acpi/parser/psparse.c')
-rw-r--r--drivers/acpi/parser/psparse.c28
1 files changed, 8 insertions, 20 deletions
diff --git a/drivers/acpi/parser/psparse.c b/drivers/acpi/parser/psparse.c
index 83d8916bc1af..796f6b719929 100644
--- a/drivers/acpi/parser/psparse.c
+++ b/drivers/acpi/parser/psparse.c
@@ -138,7 +138,7 @@ acpi_ps_complete_this_op(struct acpi_walk_state * walk_state,
138 const struct acpi_opcode_info *parent_info; 138 const struct acpi_opcode_info *parent_info;
139 union acpi_parse_object *replacement_op = NULL; 139 union acpi_parse_object *replacement_op = NULL;
140 140
141 ACPI_FUNCTION_TRACE_PTR("ps_complete_this_op", op); 141 ACPI_FUNCTION_TRACE_PTR(ps_complete_this_op, op);
142 142
143 /* Check for null Op, can happen if AML code is corrupt */ 143 /* Check for null Op, can happen if AML code is corrupt */
144 144
@@ -333,7 +333,7 @@ acpi_ps_next_parse_state(struct acpi_walk_state *walk_state,
333 struct acpi_parse_state *parser_state = &walk_state->parser_state; 333 struct acpi_parse_state *parser_state = &walk_state->parser_state;
334 acpi_status status = AE_CTRL_PENDING; 334 acpi_status status = AE_CTRL_PENDING;
335 335
336 ACPI_FUNCTION_TRACE_PTR("ps_next_parse_state", op); 336 ACPI_FUNCTION_TRACE_PTR(ps_next_parse_state, op);
337 337
338 switch (callback_status) { 338 switch (callback_status) {
339 case AE_CTRL_TERMINATE: 339 case AE_CTRL_TERMINATE:
@@ -453,10 +453,10 @@ acpi_status acpi_ps_parse_aml(struct acpi_walk_state *walk_state)
453 struct acpi_thread_state *prev_walk_list = acpi_gbl_current_walk_list; 453 struct acpi_thread_state *prev_walk_list = acpi_gbl_current_walk_list;
454 struct acpi_walk_state *previous_walk_state; 454 struct acpi_walk_state *previous_walk_state;
455 455
456 ACPI_FUNCTION_TRACE("ps_parse_aml"); 456 ACPI_FUNCTION_TRACE(ps_parse_aml);
457 457
458 ACPI_DEBUG_PRINT((ACPI_DB_PARSE, 458 ACPI_DEBUG_PRINT((ACPI_DB_PARSE,
459 "Entered with walk_state=%p Aml=%p size=%X\n", 459 "Entered with WalkState=%p Aml=%p size=%X\n",
460 walk_state, walk_state->parser_state.aml, 460 walk_state, walk_state->parser_state.aml,
461 walk_state->parser_state.aml_size)); 461 walk_state->parser_state.aml_size));
462 462
@@ -555,21 +555,9 @@ acpi_status acpi_ps_parse_aml(struct acpi_walk_state *walk_state)
555 */ 555 */
556 if (((walk_state->parse_flags & ACPI_PARSE_MODE_MASK) == 556 if (((walk_state->parse_flags & ACPI_PARSE_MODE_MASK) ==
557 ACPI_PARSE_EXECUTE) || (ACPI_FAILURE(status))) { 557 ACPI_PARSE_EXECUTE) || (ACPI_FAILURE(status))) {
558 if (walk_state->method_desc) { 558 acpi_ds_terminate_control_method(walk_state->
559 559 method_desc,
560 /* Decrement the thread count on the method parse tree */ 560 walk_state);
561
562 if (walk_state->method_desc->method.
563 thread_count) {
564 walk_state->method_desc->method.
565 thread_count--;
566 } else {
567 ACPI_ERROR((AE_INFO,
568 "Invalid zero thread count in method"));
569 }
570 }
571
572 acpi_ds_terminate_control_method(walk_state);
573 } 561 }
574 562
575 /* Delete this walk state and all linked control states */ 563 /* Delete this walk state and all linked control states */
@@ -578,7 +566,7 @@ acpi_status acpi_ps_parse_aml(struct acpi_walk_state *walk_state)
578 previous_walk_state = walk_state; 566 previous_walk_state = walk_state;
579 567
580 ACPI_DEBUG_PRINT((ACPI_DB_PARSE, 568 ACPI_DEBUG_PRINT((ACPI_DB_PARSE,
581 "return_value=%p, implicit_value=%p State=%p\n", 569 "ReturnValue=%p, ImplicitValue=%p State=%p\n",
582 walk_state->return_desc, 570 walk_state->return_desc,
583 walk_state->implicit_return_obj, walk_state)); 571 walk_state->implicit_return_obj, walk_state));
584 572