aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/acpi/utilities
diff options
context:
space:
mode:
authorBob Moore <robert.moore@intel.com>2008-04-10 11:06:43 -0400
committerLen Brown <len.brown@intel.com>2008-04-22 14:29:31 -0400
commit24a3157a90ddf851a0880c0b8963bc43481cd85b (patch)
tree0a57648310f97b5907a09cf04412d68b79d908e4 /drivers/acpi/utilities
parenta3df4dadd446c0d7195f2bbe86dd5174426d8090 (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.c8
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}