Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1363858
| From | Lv Zheng <lv.zheng@intel.com> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | [PATCH 23/30] ACPICA: Hardware: Enhance acpi_hw_validate_register() with access_width/bit_offset awareness |
| Date | 2016-03-24 02:50 +0100 |
| Message-ID | <rg2zq-3Dt-37@gated-at.bofh.it> (permalink) |
| References | <rg2pH-3zI-3@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
ACPICA commit 997a90f810a4cb78604ef2e187611a181b498286
This patch enhances acpi_hw_validate_register() to sanitize register
accesses with awareness of access_width and bit_offset. Lv Zheng.
Link: https://github.com/acpica/acpica/commit/997a90f8
Link: https://bugs.acpica.org/show_bug.cgi?id=1240
Signed-off-by: Lv Zheng <lv.zheng@intel.com>
Signed-off-by: Bob Moore <robert.moore@intel.com>
---
drivers/acpi/acpica/hwregs.c | 25 +++++++++++++++----------
1 file changed, 15 insertions(+), 10 deletions(-)
diff --git a/drivers/acpi/acpica/hwregs.c b/drivers/acpi/acpica/hwregs.c
index 93f8831..bc3f60a 100644
--- a/drivers/acpi/acpica/hwregs.c
+++ b/drivers/acpi/acpica/hwregs.c
@@ -83,6 +83,8 @@ acpi_status
acpi_hw_validate_register(struct acpi_generic_address *reg,
u8 max_bit_width, u64 *address)
{
+ u8 bit_width;
+ u8 access_width;
/* Must have a valid pointer to a GAS structure */
@@ -109,23 +111,26 @@ acpi_hw_validate_register(struct acpi_generic_address *reg,
return (AE_SUPPORT);
}
- /* Validate the bit_width */
+ /* Validate the access_width */
- if ((reg->bit_width != 8) &&
- (reg->bit_width != 16) &&
- (reg->bit_width != 32) && (reg->bit_width != max_bit_width)) {
+ if (reg->access_width > 4) {
ACPI_ERROR((AE_INFO,
- "Unsupported register bit width: 0x%X",
- reg->bit_width));
+ "Unsupported register access width: 0x%X",
+ reg->access_width));
return (AE_SUPPORT);
}
- /* Validate the bit_offset. Just a warning for now. */
+ /* Validate the bit_width, convert access_width into number of bits */
- if (reg->bit_offset != 0) {
+ access_width = reg->access_width ? reg->access_width : 1;
+ access_width = 1 << (access_width + 2);
+ bit_width =
+ ACPI_ROUND_UP(reg->bit_offset + reg->bit_width, access_width);
+ if (max_bit_width < bit_width) {
ACPI_WARNING((AE_INFO,
- "Unsupported register bit offset: 0x%X",
- reg->bit_offset));
+ "Requested bit width 0x%X is smaller than register bit width 0x%X",
+ max_bit_width, bit_width));
+ return (AE_SUPPORT);
}
return (AE_OK);
--
1.7.10
Back to linux.kernel | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
[PATCH 00/30] ACPICA: 20160318 Release Lv Zheng <lv.zheng@intel.com> - 2016-03-24 02:40 +0100
[PATCH 28/30] ACPICA: Events: Fix an issue that _REG association can happen before namespace is initialized Lv Zheng <lv.zheng@intel.com> - 2016-03-24 02:50 +0100
[PATCH 24/30] ACPICA: Hardware: Add access_width/bit_offset support in acpi_hw_read() Lv Zheng <lv.zheng@intel.com> - 2016-03-24 02:50 +0100
RE: [PATCH 24/30] ACPICA: Hardware: Add access_width/bit_offset support in acpi_hw_read() "Zheng, Lv" <lv.zheng@intel.com> - 2016-03-29 10:20 +0200
[PATCH 21/30] ACPICA: Utilities: Add ACPI_IS_POWER_OF_TWO() Lv Zheng <lv.zheng@intel.com> - 2016-03-24 02:50 +0100
[PATCH 26/30] ACPICA: Interpreter: Fix wrong conditions for acpi_ev_install_region_handlers() invocation Lv Zheng <lv.zheng@intel.com> - 2016-03-24 02:50 +0100
[PATCH 17/30] ACPICA: Add support for QNX 6.6 platform Lv Zheng <lv.zheng@intel.com> - 2016-03-24 02:50 +0100
[PATCH 14/30] ACPICA: iASL: Cleanup/optimization for ToPLD macro support Lv Zheng <lv.zheng@intel.com> - 2016-03-24 02:50 +0100
[PATCH 29/30] ACPICA: Namespace: Reorder \_SB._INI to make sure it is evaluated before _REG evaluations Lv Zheng <lv.zheng@intel.com> - 2016-03-24 02:50 +0100
[PATCH 30/30] ACPICA: Update version to 20160318 Lv Zheng <lv.zheng@intel.com> - 2016-03-24 02:50 +0100
[PATCH 16/30] ACPICA: Headers: Update generation of the ACPICA library Lv Zheng <lv.zheng@intel.com> - 2016-03-24 02:50 +0100
[PATCH 20/30] ACPICA: iASL/Disassembler: Improve handling of unresolved methods Lv Zheng <lv.zheng@intel.com> - 2016-03-24 02:50 +0100
[PATCH 19/30] ACPICA: All: const keyword changes across the ACPICA source Lv Zheng <lv.zheng@intel.com> - 2016-03-24 02:50 +0100
[PATCH 25/30] ACPICA: Hardware: Add access_width/bit_offset support for acpi_hw_write() Lv Zheng <lv.zheng@intel.com> - 2016-03-24 02:50 +0100
[PATCH 18/30] ACPICA: Utilities: Update for strtoul64 merger Lv Zheng <lv.zheng@intel.com> - 2016-03-24 02:50 +0100
[PATCH 13/30] ACPICA: Interpreter: Update some function headers, no functional change Lv Zheng <lv.zheng@intel.com> - 2016-03-24 02:50 +0100
[PATCH 22/30] Utilities: Fix missing parentheses in ACPI_GET_BITS()/ACPI_SET_BITS() Lv Zheng <lv.zheng@intel.com> - 2016-03-24 02:50 +0100
[PATCH 23/30] ACPICA: Hardware: Enhance acpi_hw_validate_register() with access_width/bit_offset awareness Lv Zheng <lv.zheng@intel.com> - 2016-03-24 02:50 +0100
[PATCH 15/30] ACPICA: Cleanup some invocation indentations, no functional change Lv Zheng <lv.zheng@intel.com> - 2016-03-24 02:50 +0100
[PATCH 12/30] ACPICA: Intepreter: Add object extensions to Concatenate operand Lv Zheng <lv.zheng@intel.com> - 2016-03-24 02:50 +0100
[PATCH 27/30] ACPICA: Tables: Fix wrong MLC condition for dynamic table loading Lv Zheng <lv.zheng@intel.com> - 2016-03-24 02:50 +0100
[PATCH 06/30] ACPICA: IORT: Add in support for the SMMUv3 subtable Lv Zheng <lv.zheng@intel.com> - 2016-03-24 02:50 +0100
Re: [PATCH 00/30] ACPICA: 20160318 Release "Rafael J. Wysocki" <rafael@kernel.org> - 2016-03-24 14:10 +0100
RE: [PATCH 00/30] ACPICA: 20160318 Release "Zheng, Lv" <lv.zheng@intel.com> - 2016-03-28 05:10 +0200
csiph-web