From d551236d25a96394729de54ae8d09098c7e467a3 Mon Sep 17 00:00:00 2001 From: Sasha Levin Date: Wed, 12 Feb 2020 08:37:19 -0500 Subject: [PATCH] fixes for 5.4 Signed-off-by: Sasha Levin --- queue-5.4/series | 1 + ...malformed-srat-tables-during-early-a.patch | 52 +++++++++++++++++++ 2 files changed, 53 insertions(+) create mode 100644 queue-5.4/x86-boot-handle-malformed-srat-tables-during-early-a.patch diff --git a/queue-5.4/series b/queue-5.4/series index d9af5a4c81c..cb12133b875 100644 --- a/queue-5.4/series +++ b/queue-5.4/series @@ -1,2 +1,3 @@ asoc-pcm-update-fe-be-trigger-order-based-on-the-com.patch hv_sock-remove-the-accept-port-restriction.patch +x86-boot-handle-malformed-srat-tables-during-early-a.patch diff --git a/queue-5.4/x86-boot-handle-malformed-srat-tables-during-early-a.patch b/queue-5.4/x86-boot-handle-malformed-srat-tables-during-early-a.patch new file mode 100644 index 00000000000..98adec357a6 --- /dev/null +++ b/queue-5.4/x86-boot-handle-malformed-srat-tables-during-early-a.patch @@ -0,0 +1,52 @@ +From df9e4f8ea1b0f3dd1a8bb89cf48d5a4cccffa69e Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Thu, 30 Jan 2020 16:48:16 -0800 +Subject: x86/boot: Handle malformed SRAT tables during early ACPI parsing + +From: Steven Clarkson + +[ Upstream commit 2b73ea3796242608b4ccf019ff217156c92e92fe ] + +Break an infinite loop when early parsing of the SRAT table is caused +by a subtable with zero length. Known to affect the ASUS WS X299 SAGE +motherboard with firmware version 1201 which has a large block of +zeros in its SRAT table. The kernel could boot successfully on this +board/firmware prior to the introduction of early parsing this table or +after a BIOS update. + + [ bp: Fixup whitespace damage and commit message. Make it return 0 to + denote that there are no immovable regions because who knows what + else is broken in this BIOS. ] + +Fixes: 02a3e3cdb7f1 ("x86/boot: Parse SRAT table and count immovable memory regions") +Signed-off-by: Steven Clarkson +Signed-off-by: Borislav Petkov +Cc: linux-acpi@vger.kernel.org +Link: https://bugzilla.kernel.org/show_bug.cgi?id=206343 +Link: https://lkml.kernel.org/r/CAHKq8taGzj0u1E_i=poHUam60Bko5BpiJ9jn0fAupFUYexvdUQ@mail.gmail.com +Signed-off-by: Sasha Levin +--- + arch/x86/boot/compressed/acpi.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/arch/x86/boot/compressed/acpi.c b/arch/x86/boot/compressed/acpi.c +index 25019d42ae937..ef2ad7253cd5e 100644 +--- a/arch/x86/boot/compressed/acpi.c ++++ b/arch/x86/boot/compressed/acpi.c +@@ -393,7 +393,13 @@ int count_immovable_mem_regions(void) + table = table_addr + sizeof(struct acpi_table_srat); + + while (table + sizeof(struct acpi_subtable_header) < table_end) { ++ + sub_table = (struct acpi_subtable_header *)table; ++ if (!sub_table->length) { ++ debug_putstr("Invalid zero length SRAT subtable.\n"); ++ return 0; ++ } ++ + if (sub_table->type == ACPI_SRAT_TYPE_MEMORY_AFFINITY) { + struct acpi_srat_mem_affinity *ma; + +-- +2.20.1 + -- 2.47.3