From: Len Brown <lenb@kernel.org>
To: linux-acpi@vger.kernel.org, linux-pm@lists.linux-foundation.org
Cc: linux-kernel@vger.kernel.org, Bob Moore <robert.moore@intel.com>,
Lin Ming <ming.m.lin@intel.com>, Len Brown <len.brown@intel.com>
Subject: [PATCH 10/52] ACPICA: Add FADT error message for GAS BitWidth overflow
Date: Tue, 24 Jul 2012 23:41:06 -0400 [thread overview]
Message-ID: <66be71ff477389ff12c9c43dc6ee176cf8e1dd3a.1343187617.git.len.brown@intel.com> (raw)
In-Reply-To: <1343187708-19532-1-git-send-email-lenb@kernel.org>
In-Reply-To: <6af1c4fc5227af65092ebc848989693562bfa3e8.1343187617.git.len.brown@intel.com>
From: Bob Moore <robert.moore@intel.com>
Error for possible overflow during conversion from 32-bit legacy
register addresses to GAS format. The GAS struct contains a
one-byte BitWidth field, meaning that the maximum length of a
register is 255 bits. ACPICA BZ 953.
https://www.acpica.org/bugzilla/show_bug.cgi?id=953
Signed-off-by: Bob Moore <robert.moore@intel.com>
Signed-off-by: Lin Ming <ming.m.lin@intel.com>
Signed-off-by: Len Brown <len.brown@intel.com>
---
drivers/acpi/acpica/tbfadt.c | 32 +++++++++++++++++++++++++-------
1 file changed, 25 insertions(+), 7 deletions(-)
diff --git a/drivers/acpi/acpica/tbfadt.c b/drivers/acpi/acpica/tbfadt.c
index 4c9c760..d919f40 100644
--- a/drivers/acpi/acpica/tbfadt.c
+++ b/drivers/acpi/acpica/tbfadt.c
@@ -49,9 +49,10 @@
ACPI_MODULE_NAME("tbfadt")
/* Local prototypes */
-static ACPI_INLINE void
+static void
acpi_tb_init_generic_address(struct acpi_generic_address *generic_address,
- u8 space_id, u8 byte_width, u64 address);
+ u8 space_id,
+ u8 byte_width, u64 address, char *register_name);
static void acpi_tb_convert_fadt(void);
@@ -182,10 +183,25 @@ static struct acpi_fadt_pm_info fadt_pm_info_table[] = {
*
******************************************************************************/
-static ACPI_INLINE void
+static void
acpi_tb_init_generic_address(struct acpi_generic_address *generic_address,
- u8 space_id, u8 byte_width, u64 address)
+ u8 space_id,
+ u8 byte_width, u64 address, char *register_name)
{
+ u8 bit_width;
+
+ /* Bit width field in the GAS is only one byte long, 255 max */
+
+ bit_width = (u8)(byte_width * 8);
+
+ if (byte_width > 31) { /* (31*8)=248 */
+ ACPI_ERROR((AE_INFO,
+ "%s - 32-bit FADT register is too long (%u bytes, %u bits) "
+ "to convert to GAS struct - 255 bits max, truncating",
+ register_name, byte_width, (byte_width * 8)));
+
+ bit_width = 255;
+ }
/*
* The 64-bit Address field is non-aligned in the byte packed
@@ -196,7 +212,7 @@ acpi_tb_init_generic_address(struct acpi_generic_address *generic_address,
/* All other fields are byte-wide */
generic_address->space_id = space_id;
- generic_address->bit_width = (u8)ACPI_MUL_8(byte_width);
+ generic_address->bit_width = bit_width;
generic_address->bit_offset = 0;
generic_address->access_width = 0; /* Access width ANY */
}
@@ -456,7 +472,8 @@ static void acpi_tb_convert_fadt(void)
&acpi_gbl_FADT,
fadt_info_table
[i].length),
- (u64) address32);
+ (u64) address32,
+ fadt_info_table[i].name);
}
}
}
@@ -670,7 +687,8 @@ static void acpi_tb_setup_fadt_registers(void)
source64->address +
(fadt_pm_info_table[i].
register_num *
- pm1_register_byte_width));
+ pm1_register_byte_width),
+ "PmRegisters");
}
}
}
--
1.7.12.rc0
next prev parent reply other threads:[~2012-07-25 3:53 UTC|newest]
Thread overview: 56+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-07-25 3:40 ACPI & Power Management Patches for Linux-3.6-merge - part 1 Len Brown
2012-07-25 3:40 ` [PATCH 01/52] ACPICA: AML Parser: Fix two possible memory leaks in error path Len Brown
2012-07-25 3:40 ` [PATCH 02/52] ACPICA: Object dump routines: Use common function for string output Len Brown
2012-07-25 3:40 ` [PATCH 03/52] ACPICA: Lint fixes for acpi_write, no functional changes Len Brown
2012-07-25 3:41 ` [PATCH 04/52] ACPICA: Add support for multiple notify handlers Len Brown
2012-07-25 3:41 ` [PATCH 05/52] ACPICA: Update to version 20120420 Len Brown
2012-07-25 3:41 ` [PATCH 06/52] ACPICA: Disassembler: Add support for Operation Region externals Len Brown
2012-07-25 3:41 ` [PATCH 07/52] ACPICA: ACPI 5/iASL: Add support for PCC keyword Len Brown
2012-07-25 3:41 ` [PATCH 08/52] ACPICA: iASL: Improved pathname support Len Brown
2012-07-25 3:41 ` [PATCH 09/52] ACPICA: Remove argument of acpi_os_wait_events_complete Len Brown
2012-07-25 3:41 ` Len Brown [this message]
2012-07-25 3:41 ` [PATCH 11/52] ACPICA: Update to version 20120518 Len Brown
2012-07-25 3:41 ` [PATCH 12/52] cpuidle: remove unused hrtimer_peek_ahead_timers() call Len Brown
2012-07-25 3:41 ` [PATCH 13/52] cpuidle: add checks to avoid NULL pointer dereference Len Brown
2012-07-25 3:41 ` [PATCH 14/52] ACPI Battery: Added capacity Len Brown
2012-07-25 3:41 ` [PATCH 15/52] cpuidle: refactor out cpuidle_enter_state Len Brown
2012-07-25 3:41 ` [PATCH 16/52] cpuidle: fix error handling in __cpuidle_register_device Len Brown
2012-07-25 3:41 ` [PATCH 17/52] cpuidle: add support for states that affect multiple cpus Len Brown
2012-07-25 3:41 ` [PATCH 18/52] cpuidle: coupled: add parallel barrier function Len Brown
2012-07-25 3:41 ` [PATCH 19/52] drivers/thermal/spear_thermal.c: add Device Tree probing capability Len Brown
2012-07-25 3:41 ` [PATCH 20/52] ACPI: Add an interface to evaluate _OST Len Brown
2012-07-25 3:41 ` [PATCH 21/52] ACPI: Add _OST support for sysfs eject Len Brown
2012-07-25 3:41 ` [PATCH 22/52] ACPI: Add _OST support for ACPI CPU hotplug Len Brown
2012-07-25 3:41 ` [PATCH 23/52] ACPI: Add _OST support for ACPI memory hotplug Len Brown
2012-07-25 3:41 ` [PATCH 24/52] ACPI: Add _OST support for ACPI container hotplug Len Brown
2012-07-25 3:41 ` [PATCH 25/52] ACPI: Set hotplug _OST support bit to _OSC Len Brown
2012-07-25 3:41 ` [PATCH 26/52] ACPI, PM, Specify lowest allowed state for device sleep state Len Brown
2012-07-25 3:41 ` [PATCH 27/52] intel_idle: initial IVB support Len Brown
2012-07-25 3:41 ` [PATCH 28/52] ACPI: remove acpi_pad MAINTAINERS entry Len Brown
2012-07-25 3:41 ` [PATCH 29/52] ACPI: acpi_pad: rename "power_saving" thread to "acpi_pad" thread Len Brown
2012-07-25 3:41 ` [PATCH 31/52] ACPICA: Disassembler: Emit descriptions for ACPI predefined names Len Brown
2012-07-25 3:41 ` [PATCH 32/52] ACPICA: Utilities: conditionally compile backslash removal function Len Brown
2012-07-25 3:41 ` [PATCH 33/52] ACPICA: Update comments; no functional change Len Brown
2012-07-25 3:41 ` [PATCH 34/52] ACPICA: Add support for implicit notify on multiple devices Len Brown
2012-07-25 3:41 ` [PATCH 35/52] ACPICA: Update to version 20120620 Len Brown
2012-07-25 3:41 ` [PATCH 36/52] ACPI: acpi_pad: tune round_robin_time Len Brown
2012-07-25 3:41 ` [PATCH 37/52] ACPICA: Split exception code utilities to a new file, utexcep.c Len Brown
2012-07-25 3:41 ` [PATCH 38/52] ACPICA: Add new interfaces for BIOS(firmware) errors and warnings Len Brown
2012-07-25 3:41 ` [PATCH 39/52] ACPICA: Table manager: deploy new firmware error/warning interfaces Len Brown
2012-07-25 3:41 ` [PATCH 40/52] ACPICA: Fix some comment fields Len Brown
2012-07-25 3:41 ` [PATCH 41/52] ACPICA: Add PCC address space to space ID decode function Len Brown
2012-07-25 3:41 ` [PATCH 42/52] ACPICA: Split file: tbxface.c -> tbxfload.c Len Brown
2012-07-25 3:41 ` [PATCH 43/52] ACPICA: Add new ACPI table load/unload external interfaces Len Brown
2012-07-25 3:41 ` [PATCH 44/52] ACPICA: Update header files copyrights to 2012 Len Brown
2012-07-25 3:41 ` [PATCH 45/52] ACPICA: AcpiSrc: Fix some translation issues for Linux conversion Len Brown
2012-07-25 3:41 ` [PATCH 46/52] ACPICA: Update to version 20120711 Len Brown
2012-07-25 3:41 ` [PATCH 47/52] tools/power: turbostat v2 - re-write for efficiency Len Brown
2012-07-25 3:41 ` [PATCH 48/52] tools/power: turbostat: fix large c1% issue Len Brown
2012-07-25 13:03 ` Konrad Rzeszutek Wilk
2012-07-25 3:41 ` [PATCH 49/52] ACPI/AC: prevent OOPS on some boxes due to missing check power_supply_register() return value check Len Brown
2012-07-25 3:41 ` [PATCH 50/52] Thermal: Make Thermal trip points writeable Len Brown
2012-07-25 11:13 ` Rafael J. Wysocki
2012-07-25 11:15 ` [linux-pm] " R, Durgadoss
2012-07-25 3:41 ` [PATCH 51/52] Thermal: Add Hysteresis attributes Len Brown
2012-07-25 3:41 ` [PATCH 52/52] Thermal: Documentation update Len Brown
2012-07-25 6:47 ` [linux-pm] ACPI & Power Management Patches for Linux-3.6-merge - part 1 Amit Kachhap
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=66be71ff477389ff12c9c43dc6ee176cf8e1dd3a.1343187617.git.len.brown@intel.com \
--to=lenb@kernel.org \
--cc=len.brown@intel.com \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@lists.linux-foundation.org \
--cc=ming.m.lin@intel.com \
--cc=robert.moore@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®