diff options
author | Bob Moore <robert.moore@intel.com> | 2008-04-10 11:06:43 -0400 |
---|---|---|
committer | Len Brown <len.brown@intel.com> | 2008-04-22 14:29:31 -0400 |
commit | 24a3157a90ddf851a0880c0b8963bc43481cd85b (patch) | |
tree | 0a57648310f97b5907a09cf04412d68b79d908e4 /drivers/acpi/utilities | |
parent | a3df4dadd446c0d7195f2bbe86dd5174426d8090 (diff) |
ACPICA: Fix for possible error when packages/buffers are passed to methods externally
Fixed a problem where buffer and package objects passed as
arguments to a control method via the external AcpiEvaluateObject
interface could cause an AE_AML_INTERNAL exception depending on the
order and type of operators executed by the target control method.
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/utilities')
-rw-r--r-- | drivers/acpi/utilities/utcopy.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/acpi/utilities/utcopy.c b/drivers/acpi/utilities/utcopy.c index 4c4021d82f99..4e9a62b34aef 100644 --- a/drivers/acpi/utilities/utcopy.c +++ b/drivers/acpi/utilities/utcopy.c | |||
@@ -511,6 +511,10 @@ acpi_ut_copy_esimple_to_isimple(union acpi_object *external_object, | |||
511 | external_object->buffer.length); | 511 | external_object->buffer.length); |
512 | 512 | ||
513 | internal_object->buffer.length = external_object->buffer.length; | 513 | internal_object->buffer.length = external_object->buffer.length; |
514 | |||
515 | /* Mark buffer data valid */ | ||
516 | |||
517 | internal_object->buffer.flags |= AOPOBJ_DATA_VALID; | ||
514 | break; | 518 | break; |
515 | 519 | ||
516 | case ACPI_TYPE_INTEGER: | 520 | case ACPI_TYPE_INTEGER: |
@@ -586,6 +590,10 @@ acpi_ut_copy_epackage_to_ipackage(union acpi_object *external_object, | |||
586 | } | 590 | } |
587 | } | 591 | } |
588 | 592 | ||
593 | /* Mark package data valid */ | ||
594 | |||
595 | package_object->package.flags |= AOPOBJ_DATA_VALID; | ||
596 | |||
589 | *internal_object = package_object; | 597 | *internal_object = package_object; |
590 | return_ACPI_STATUS(status); | 598 | return_ACPI_STATUS(status); |
591 | } | 599 | } |