From: Alexander Rauth on
commit dadf28a10c3eb29421837a2e413ab869ebd9e168 enabled multibyte
access to EC, but ignored that the consuming function expects the
bitfields to be in chunks of maximal 64 bit. So limit multibyte
access to 8 byte to prevent error in the ACPI layer.

Signed-off-by: Alexander Rauth <alexander.rauth(a)promotion-ie.de>
---
drivers/acpi/acpica/exprep.c | 17 +++++++++++------
1 files changed, 11 insertions(+), 6 deletions(-)

diff --git a/drivers/acpi/acpica/exprep.c b/drivers/acpi/acpica/exprep.c
index a610ebe..58659af 100644
--- a/drivers/acpi/acpica/exprep.c
+++ b/drivers/acpi/acpica/exprep.c
@@ -471,13 +471,18 @@ acpi_status acpi_ex_prep_field_value(struct acpi_create_field_info *info)
/* allow full data read from EC address space */
if (obj_desc->field.region_obj->region.space_id ==
ACPI_ADR_SPACE_EC) {
- if (obj_desc->common_field.bit_length > 8)
- obj_desc->common_field.access_bit_width =
- ACPI_ROUND_UP(obj_desc->common_field.
- bit_length, 8);
+ if (obj_desc->common_field.bit_length > 8) {
+ if (obj_desc->common_field.bit_length <= 64) {
+ obj_desc->common_field.access_bit_width =
+ ACPI_ROUND_UP(obj_desc->common_field.
+ bit_length, 8);
+ } else {
+ obj_desc->common_field.access_bit_width = 64;
+ }
obj_desc->common_field.access_byte_width =
- ACPI_DIV_8(obj_desc->common_field.
- access_bit_width);
+ ACPI_DIV_8(obj_desc->common_field.
+ access_bit_width);
+ }
}

ACPI_DEBUG_PRINT((ACPI_DB_BFIELD,
--
1.6.4.4

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo(a)vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/