aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/acpi/dispatcher/dsmethod.c3
-rw-r--r--drivers/acpi/parser/psparse.c4
2 files changed, 6 insertions, 1 deletions
diff --git a/drivers/acpi/dispatcher/dsmethod.c b/drivers/acpi/dispatcher/dsmethod.c
index 4613b9ca5792..279a5a60a0dd 100644
--- a/drivers/acpi/dispatcher/dsmethod.c
+++ b/drivers/acpi/dispatcher/dsmethod.c
@@ -103,6 +103,9 @@ acpi_ds_method_error(acpi_status status, struct acpi_walk_state *walk_state)
103 NULL); 103 NULL);
104 acpi_ex_enter_interpreter(); 104 acpi_ex_enter_interpreter();
105 } 105 }
106
107 acpi_ds_clear_implicit_return(walk_state);
108
106#ifdef ACPI_DISASSEMBLER 109#ifdef ACPI_DISASSEMBLER
107 if (ACPI_FAILURE(status)) { 110 if (ACPI_FAILURE(status)) {
108 111
diff --git a/drivers/acpi/parser/psparse.c b/drivers/acpi/parser/psparse.c
index 52caaf6582e7..68e932f215ea 100644
--- a/drivers/acpi/parser/psparse.c
+++ b/drivers/acpi/parser/psparse.c
@@ -635,10 +635,12 @@ acpi_status acpi_ps_parse_aml(struct acpi_walk_state *walk_state)
635 ACPI_WALK_METHOD_RESTART; 635 ACPI_WALK_METHOD_RESTART;
636 } 636 }
637 } else { 637 } else {
638 /* On error, delete any return object */ 638 /* On error, delete any return object or implicit return */
639 639
640 acpi_ut_remove_reference(previous_walk_state-> 640 acpi_ut_remove_reference(previous_walk_state->
641 return_desc); 641 return_desc);
642 acpi_ds_clear_implicit_return
643 (previous_walk_state);
642 } 644 }
643 } 645 }
644 646