summaryrefslogtreecommitdiffstats
path: root/ACPICA-Tables-Fix-bad-pointer-issue-in-acpi_tb_parse_root_table.patch
diff options
context:
space:
mode:
authorJosh Boyer <jwboyer@fedoraproject.org>2014-04-25 08:12:19 -0400
committerJosh Boyer <jwboyer@fedoraproject.org>2014-04-25 08:12:25 -0400
commitf9bc831cd3e37ce7ef524fcaa045da301b486cc1 (patch)
tree1faff1e2f19d6fcb3d878c69c59a1399af21990c /ACPICA-Tables-Fix-bad-pointer-issue-in-acpi_tb_parse_root_table.patch
parent1003f8c87011875db615a92a3f45d84faf42270c (diff)
downloadkernel-f9bc831cd3e37ce7ef524fcaa045da301b486cc1.tar.gz
kernel-f9bc831cd3e37ce7ef524fcaa045da301b486cc1.tar.xz
kernel-f9bc831cd3e37ce7ef524fcaa045da301b486cc1.zip
Fix ACPI issue preventing boot on AMI firmware (rhbz 1090746)
Diffstat (limited to 'ACPICA-Tables-Fix-bad-pointer-issue-in-acpi_tb_parse_root_table.patch')
-rw-r--r--ACPICA-Tables-Fix-bad-pointer-issue-in-acpi_tb_parse_root_table.patch67
1 files changed, 67 insertions, 0 deletions
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 <lv.zheng@intel.com>
+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 <lv.zheng@intel.com>
+Reported-and-tested-by: Bruce Chiarelli <mano155@gmail.com>
+Reported-and-tested-by: Spyros Stathopoulos <spystath@gmail.com>
+Cc: <stable@vger.kernel.org> # 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
+