diff options
Diffstat (limited to 'drivers/acpi/executer/exoparg1.c')
-rw-r--r-- | drivers/acpi/executer/exoparg1.c | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/drivers/acpi/executer/exoparg1.c b/drivers/acpi/executer/exoparg1.c index 4f3627ee2b2b..d00f766246f3 100644 --- a/drivers/acpi/executer/exoparg1.c +++ b/drivers/acpi/executer/exoparg1.c | |||
@@ -554,16 +554,18 @@ acpi_status acpi_ex_opcode_1A_1T_1R(struct acpi_walk_state *walk_state) | |||
554 | 554 | ||
555 | cleanup: | 555 | cleanup: |
556 | 556 | ||
557 | if (!walk_state->result_obj) { | ||
558 | walk_state->result_obj = return_desc; | ||
559 | } | ||
560 | |||
561 | /* Delete return object on error */ | 557 | /* Delete return object on error */ |
562 | 558 | ||
563 | if (ACPI_FAILURE(status)) { | 559 | if (ACPI_FAILURE(status)) { |
564 | acpi_ut_remove_reference(return_desc); | 560 | acpi_ut_remove_reference(return_desc); |
565 | } | 561 | } |
566 | 562 | ||
563 | /* Save return object on success */ | ||
564 | |||
565 | else if (!walk_state->result_obj) { | ||
566 | walk_state->result_obj = return_desc; | ||
567 | } | ||
568 | |||
567 | return_ACPI_STATUS(status); | 569 | return_ACPI_STATUS(status); |
568 | } | 570 | } |
569 | 571 | ||
@@ -1028,6 +1030,11 @@ acpi_status acpi_ex_opcode_1A_0T_1R(struct acpi_walk_state *walk_state) | |||
1028 | acpi_ut_remove_reference(return_desc); | 1030 | acpi_ut_remove_reference(return_desc); |
1029 | } | 1031 | } |
1030 | 1032 | ||
1031 | walk_state->result_obj = return_desc; | 1033 | /* Save return object on success */ |
1034 | |||
1035 | else { | ||
1036 | walk_state->result_obj = return_desc; | ||
1037 | } | ||
1038 | |||
1032 | return_ACPI_STATUS(status); | 1039 | return_ACPI_STATUS(status); |
1033 | } | 1040 | } |