diff options
author | Bob Moore <robert.moore@intel.com> | 2008-04-10 17:06:37 +0200 |
---|---|---|
committer | Len Brown <len.brown@intel.com> | 2008-04-22 20:29:21 +0200 |
commit | 4b6e16cf2bacbf328535097fa74f1494b1873c54 (patch) | |
tree | 5b81427d81577d7741d3d17dcc928a770decdbe0 /drivers/acpi/executer/exoparg6.c | |
parent | ACPICA: changed order of interpretation of operand objects (diff) | |
download | linux-4b6e16cf2bacbf328535097fa74f1494b1873c54.tar.xz linux-4b6e16cf2bacbf328535097fa74f1494b1873c54.zip |
ACPICA: Avoid use of invalid pointers in returned object field
During operand evaluation, ensure that the ReturnObj field is
cleared on error and only valid pointers are stored there.
Signed-off-by: Bob Moore <robert.moore@intel.com>
Signed-off-by: Alexey Starikovskiy <astarikovskiy@suse.de>
Signed-off-by: Len Brown <len.brown@intel.com>
Diffstat (limited to 'drivers/acpi/executer/exoparg6.c')
-rw-r--r-- | drivers/acpi/executer/exoparg6.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/acpi/executer/exoparg6.c b/drivers/acpi/executer/exoparg6.c index bd80a9cb3d65..163b2b3d9ce2 100644 --- a/drivers/acpi/executer/exoparg6.c +++ b/drivers/acpi/executer/exoparg6.c @@ -322,8 +322,6 @@ acpi_status acpi_ex_opcode_6A_0T_1R(struct acpi_walk_state * walk_state) goto cleanup; } - walk_state->result_obj = return_desc; - cleanup: /* Delete return object on error */ @@ -332,5 +330,11 @@ acpi_status acpi_ex_opcode_6A_0T_1R(struct acpi_walk_state * walk_state) acpi_ut_remove_reference(return_desc); } + /* Save return object on success */ + + else { + walk_state->result_obj = return_desc; + } + return_ACPI_STATUS(status); } |