| From b9ebdd3fe7016e416bb07645c7d8a58d821bec0f Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Wed, 22 Dec 2021 16:57:34 +0100 |
| Subject: ACPICA: actypes.h: Expand the ACPI_ACCESS_ definitions |
| |
| From: Mark Langsdorf <mlangsdo@redhat.com> |
| |
| [ Upstream commit f81bdeaf816142e0729eea0cc84c395ec9673151 ] |
| |
| ACPICA commit bc02c76d518135531483dfc276ed28b7ee632ce1 |
| |
| The current ACPI_ACCESS_*_WIDTH defines do not provide a way to |
| test that size is small enough to not cause an overflow when |
| applied to a 32-bit integer. |
| |
| Rather than adding more magic numbers, add ACPI_ACCESS_*_SHIFT, |
| ACPI_ACCESS_*_MAX, and ACPI_ACCESS_*_DEFAULT #defines and |
| redefine ACPI_ACCESS_*_WIDTH in terms of the new #defines. |
| |
| This was inititally reported on Linux where a size of 102 in |
| ACPI_ACCESS_BIT_WIDTH caused an overflow error in the SPCR |
| initialization code. |
| |
| Link: https://github.com/acpica/acpica/commit/bc02c76d |
| Signed-off-by: Mark Langsdorf <mlangsdo@redhat.com> |
| Signed-off-by: Bob Moore <robert.moore@intel.com> |
| Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| include/acpi/actypes.h | 10 ++++++++-- |
| 1 file changed, 8 insertions(+), 2 deletions(-) |
| |
| diff --git a/include/acpi/actypes.h b/include/acpi/actypes.h |
| index 9373662cdb44f..ff5fecff51167 100644 |
| --- a/include/acpi/actypes.h |
| +++ b/include/acpi/actypes.h |
| @@ -536,8 +536,14 @@ typedef u64 acpi_integer; |
| * Can be used with access_width of struct acpi_generic_address and access_size of |
| * struct acpi_resource_generic_register. |
| */ |
| -#define ACPI_ACCESS_BIT_WIDTH(size) (1 << ((size) + 2)) |
| -#define ACPI_ACCESS_BYTE_WIDTH(size) (1 << ((size) - 1)) |
| +#define ACPI_ACCESS_BIT_SHIFT 2 |
| +#define ACPI_ACCESS_BYTE_SHIFT -1 |
| +#define ACPI_ACCESS_BIT_MAX (31 - ACPI_ACCESS_BIT_SHIFT) |
| +#define ACPI_ACCESS_BYTE_MAX (31 - ACPI_ACCESS_BYTE_SHIFT) |
| +#define ACPI_ACCESS_BIT_DEFAULT (8 - ACPI_ACCESS_BIT_SHIFT) |
| +#define ACPI_ACCESS_BYTE_DEFAULT (8 - ACPI_ACCESS_BYTE_SHIFT) |
| +#define ACPI_ACCESS_BIT_WIDTH(size) (1 << ((size) + ACPI_ACCESS_BIT_SHIFT)) |
| +#define ACPI_ACCESS_BYTE_WIDTH(size) (1 << ((size) + ACPI_ACCESS_BYTE_SHIFT)) |
| |
| /******************************************************************************* |
| * |
| -- |
| 2.34.1 |
| |