https://bugzilla.kernel.org/show_bug.cgi?id=206343

--- Comment #1 from Steven Clarkson (s...@lambdal.com) ---
Turns out this causes the kernel to hang in the while loop parsing the SRAT
table in count_immovable_mem_regions. After dumping the SRAT table, it looks
like there's 320 bytes of zeros in the middle of it.

Sure enough, dmesg complains

[    0.007413] ACPI: [SRAT:0x00] Invalid zero length
[    0.007415] ACPI: [SRAT:0x01] Invalid zero length

Proposed patch below.


diff --git a/arch/x86/boot/compressed/acpi.c b/arch/x86/boot/compressed/acpi.c
index 25019d42ae93..7369de333eda 100644
--- a/arch/x86/boot/compressed/acpi.c
+++ b/arch/x86/boot/compressed/acpi.c
@@ -394,6 +394,12 @@ int count_immovable_mem_regions(void)

        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");
+                       break;
+               }
+
                if (sub_table->type == ACPI_SRAT_TYPE_MEMORY_AFFINITY) {
                        struct acpi_srat_mem_affinity *ma;

-- 
You are receiving this mail because:
You are watching the assignee of the bug.

_______________________________________________
acpi-bugzilla mailing list
acpi-bugzilla@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/acpi-bugzilla

Reply via email to