aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/acpi/acpica/psparse.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/acpi/acpica/psparse.c')
-rw-r--r--drivers/acpi/acpica/psparse.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/acpi/acpica/psparse.c b/drivers/acpi/acpica/psparse.c
index 0a23897d8adf..1ce26d9f8ff6 100644
--- a/drivers/acpi/acpica/psparse.c
+++ b/drivers/acpi/acpica/psparse.c
@@ -537,9 +537,11 @@ acpi_status acpi_ps_parse_aml(struct acpi_walk_state *walk_state)
537 537
538 /* Either the method parse or actual execution failed */ 538 /* Either the method parse or actual execution failed */
539 539
540 acpi_ex_exit_interpreter();
540 ACPI_ERROR_METHOD("Method parse/execution failed", 541 ACPI_ERROR_METHOD("Method parse/execution failed",
541 walk_state->method_node, NULL, 542 walk_state->method_node, NULL,
542 status); 543 status);
544 acpi_ex_enter_interpreter();
543 545
544 /* Check for possible multi-thread reentrancy problem */ 546 /* Check for possible multi-thread reentrancy problem */
545 547
@@ -571,7 +573,9 @@ acpi_status acpi_ps_parse_aml(struct acpi_walk_state *walk_state)
571 * cleanup to do 573 * cleanup to do
572 */ 574 */
573 if (((walk_state->parse_flags & ACPI_PARSE_MODE_MASK) == 575 if (((walk_state->parse_flags & ACPI_PARSE_MODE_MASK) ==
574 ACPI_PARSE_EXECUTE) || (ACPI_FAILURE(status))) { 576 ACPI_PARSE_EXECUTE &&
577 !(walk_state->parse_flags & ACPI_PARSE_MODULE_LEVEL)) ||
578 (ACPI_FAILURE(status))) {
575 acpi_ds_terminate_control_method(walk_state-> 579 acpi_ds_terminate_control_method(walk_state->
576 method_desc, 580 method_desc,
577 walk_state); 581 walk_state);