diff --git a/ACPICA-Tables-Fix-bad-pointer-issue-in-acpi_tb_parse_root_table.patch b/ACPICA-Tables-Fix-bad-pointer-issue-in-acpi_tb_parse_root_table.patch new file mode 100644 index 000000000..73dfc5aef --- /dev/null +++ b/ACPICA-Tables-Fix-bad-pointer-issue-in-acpi_tb_parse_root_table.patch @@ -0,0 +1,67 @@ +Bugzilla: 1090746 +Upstream-status: Queued for 3.15 and CC'd to stable + +From 2bb09843fc720389082ce7834b2716254bdf6c2d Mon Sep 17 00:00:00 2001 +Message-Id: <2bb09843fc720389082ce7834b2716254bdf6c2d.1397794898.git.lv.zheng@intel.com> +From: Lv Zheng +Date: Fri, 18 Apr 2014 12:21:34 +0800 +Subject: [PATCH] ACPICA: Tables: Fix a bad pointer issue in + acpi_tb_parse_root_table(). + +The following is a linuxizing generation of the ACPICA commit to back ports +Linux XSDT validation mechanism to ACPICA: + Commit: 671cc68dc61f029d44b43a681356078e02d8dab8 + Subject: ACPICA: Back port and refine validation of the XSDT root table. +It triggers a regression that a pointer is still used after unmapping. + +This patch fixes this issue. Lv Zheng. + +Buglink: https://bugzilla.kernel.org/show_bug.cgi?id=73911 +Buglink: https://bugs.archlinux.org/task/39811 +Signed-off-by: Lv Zheng +Reported-and-tested-by: Bruce Chiarelli +Reported-and-tested-by: Spyros Stathopoulos +Cc: # 3.14.x: 671cc68: ACPICA: Back port and refine validation of the XSDT root table. +--- + drivers/acpi/acpica/tbutils.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/drivers/acpi/acpica/tbutils.c b/drivers/acpi/acpica/tbutils.c +index 6412d3c..7285871 100644 +--- a/drivers/acpi/acpica/tbutils.c ++++ b/drivers/acpi/acpica/tbutils.c +@@ -461,6 +461,7 @@ acpi_status __init acpi_tb_parse_root_table(acpi_physical_address rsdp_address) + u32 table_count; + struct acpi_table_header *table; + acpi_physical_address address; ++ acpi_physical_address rsdt_address; + u32 length; + u8 *table_entry; + acpi_status status; +@@ -488,11 +489,13 @@ acpi_status __init acpi_tb_parse_root_table(acpi_physical_address rsdp_address) + * as per the ACPI specification. + */ + address = (acpi_physical_address) rsdp->xsdt_physical_address; ++ rsdt_address = (acpi_physical_address) rsdp->rsdt_physical_address; + table_entry_size = ACPI_XSDT_ENTRY_SIZE; + } else { + /* Root table is an RSDT (32-bit physical addresses) */ + + address = (acpi_physical_address) rsdp->rsdt_physical_address; ++ rsdt_address = address; + table_entry_size = ACPI_RSDT_ENTRY_SIZE; + } + +@@ -515,8 +518,7 @@ acpi_status __init acpi_tb_parse_root_table(acpi_physical_address rsdp_address) + + /* Fall back to the RSDT */ + +- address = +- (acpi_physical_address) rsdp->rsdt_physical_address; ++ address = rsdt_address; + table_entry_size = ACPI_RSDT_ENTRY_SIZE; + } + } +-- +1.7.10 + diff --git a/kernel.spec b/kernel.spec index 43121ac79..26a453bed 100644 --- a/kernel.spec +++ b/kernel.spec @@ -641,6 +641,9 @@ Patch25064: 0001-HID-rmi-do-not-handle-touchscreens-through-hid-rmi.patch #rhbz 1089689 Patch25065: 0001-synaptics-Add-min-max-quirk-for-ThinkPad-Edge-E431.patch +#rhbz 1090746 +Patch25067: ACPICA-Tables-Fix-bad-pointer-issue-in-acpi_tb_parse_root_table.patch + # END OF PATCH DEFINITIONS %endif @@ -1290,6 +1293,9 @@ ApplyPatch disable-libdw-unwind-on-non-x86.patch #rhbz 1089689 ApplyPatch 0001-synaptics-Add-min-max-quirk-for-ThinkPad-Edge-E431.patch +#rhbz 1090746 +ApplyPatch ACPICA-Tables-Fix-bad-pointer-issue-in-acpi_tb_parse_root_table.patch + # END OF PATCH APPLICATIONS %endif @@ -2069,6 +2075,9 @@ fi # ||----w | # || || %changelog +* Fri Apr 25 2014 Josh Boyer +- Fix ACPI issue preventing boot on AMI firmware (rhbz 1090746) + * Fri Apr 25 2014 Hans de Goede - Add synaptics min-max quirk for ThinkPad Edge E431 (rhbz#1089689)