diff options
author | Lin Ming <ming.m.lin@intel.com> | 2008-09-26 23:50:24 -0400 |
---|---|---|
committer | Len Brown <len.brown@intel.com> | 2008-10-22 23:14:48 -0400 |
commit | d8a0ec914afa1a994d2f6184ac4c6668b5f8068f (patch) | |
tree | a7db5cd3beebfafdd140c9ca0249388084dd24e5 | |
parent | 68e125c40597802b9789bc696775bf0246e7667d (diff) |
ACPICA: Fixed a couple memory leaks associated with "implicit return"
Fixed a couple memory leaks associated with "implicit return" objects
when the AML Interpreter slack mode is enabled.
http://www.acpica.org/bugzilla/show_bug.cgi?id=349
Signed-off-by: Lin Ming <ming.m.lin@intel.com>
Signed-off-by: Bob Moore <robert.moore@intel.com>
Signed-off-by: Len Brown <len.brown@intel.com>
-rw-r--r-- | drivers/acpi/dispatcher/dsmethod.c | 3 | ||||
-rw-r--r-- | drivers/acpi/parser/psparse.c | 4 |
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 | ||