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>
This commit is contained in:
parent
a3df4dadd4
commit
24a3157a90
@ -511,6 +511,10 @@ acpi_ut_copy_esimple_to_isimple(union acpi_object *external_object,
|
|||||||
external_object->buffer.length);
|
external_object->buffer.length);
|
||||||
|
|
||||||
internal_object->buffer.length = external_object->buffer.length;
|
internal_object->buffer.length = external_object->buffer.length;
|
||||||
|
|
||||||
|
/* Mark buffer data valid */
|
||||||
|
|
||||||
|
internal_object->buffer.flags |= AOPOBJ_DATA_VALID;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ACPI_TYPE_INTEGER:
|
case ACPI_TYPE_INTEGER:
|
||||||
@ -586,6 +590,10 @@ acpi_ut_copy_epackage_to_ipackage(union acpi_object *external_object,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Mark package data valid */
|
||||||
|
|
||||||
|
package_object->package.flags |= AOPOBJ_DATA_VALID;
|
||||||
|
|
||||||
*internal_object = package_object;
|
*internal_object = package_object;
|
||||||
return_ACPI_STATUS(status);
|
return_ACPI_STATUS(status);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user