|
@@ -210,9 +210,7 @@ acpi_ex_write_data_to_field(union acpi_operand_object *source_desc,
|
|
|
{
|
|
|
acpi_status status;
|
|
|
u32 length;
|
|
|
- u32 required_length;
|
|
|
void *buffer;
|
|
|
- void *new_buffer;
|
|
|
union acpi_operand_object *buffer_desc;
|
|
|
|
|
|
ACPI_FUNCTION_TRACE_PTR(ex_write_data_to_field, obj_desc);
|
|
@@ -312,35 +310,6 @@ acpi_ex_write_data_to_field(union acpi_operand_object *source_desc,
|
|
|
return_ACPI_STATUS(AE_AML_OPERAND_TYPE);
|
|
|
}
|
|
|
|
|
|
- /*
|
|
|
- * We must have a buffer that is at least as long as the field
|
|
|
- * we are writing to. This is because individual fields are
|
|
|
- * indivisible and partial writes are not supported -- as per
|
|
|
- * the ACPI specification.
|
|
|
- */
|
|
|
- new_buffer = NULL;
|
|
|
- required_length =
|
|
|
- ACPI_ROUND_BITS_UP_TO_BYTES(obj_desc->common_field.bit_length);
|
|
|
-
|
|
|
- if (length < required_length) {
|
|
|
-
|
|
|
- /* We need to create a new buffer */
|
|
|
-
|
|
|
- new_buffer = ACPI_ALLOCATE_ZEROED(required_length);
|
|
|
- if (!new_buffer) {
|
|
|
- return_ACPI_STATUS(AE_NO_MEMORY);
|
|
|
- }
|
|
|
-
|
|
|
- /*
|
|
|
- * Copy the original data to the new buffer, starting
|
|
|
- * at Byte zero. All unused (upper) bytes of the
|
|
|
- * buffer will be 0.
|
|
|
- */
|
|
|
- ACPI_MEMCPY((char *)new_buffer, (char *)buffer, length);
|
|
|
- buffer = new_buffer;
|
|
|
- length = required_length;
|
|
|
- }
|
|
|
-
|
|
|
ACPI_DEBUG_PRINT((ACPI_DB_BFIELD,
|
|
|
"FieldWrite [FROM]: Obj %p (%s:%X), Buf %p, ByteLen %X\n",
|
|
|
source_desc,
|
|
@@ -366,11 +335,5 @@ acpi_ex_write_data_to_field(union acpi_operand_object *source_desc,
|
|
|
status = acpi_ex_insert_into_field(obj_desc, buffer, length);
|
|
|
acpi_ex_release_global_lock(obj_desc->common_field.field_flags);
|
|
|
|
|
|
- /* Free temporary buffer if we used one */
|
|
|
-
|
|
|
- if (new_buffer) {
|
|
|
- ACPI_FREE(new_buffer);
|
|
|
- }
|
|
|
-
|
|
|
return_ACPI_STATUS(status);
|
|
|
}
|