lib/acpi: Skip null entries in XSDT/RSDT table iteration
diff --git a/common/lib/acpi.c b/common/lib/acpi.c
index 0ba43546..40274ca5 100644
--- a/common/lib/acpi.c
+++ b/common/lib/acpi.c
@@ -299,7 +299,10 @@ void acpi_map_tables(void) {
map_single_table((uintptr_t)xsdt, (uint32_t)-1);
for (size_t i = 0; i < xsdt_entry_count; i++) {
- struct sdt *sdt = (void *)(uintptr_t)((uint64_t *)xsdt->ptrs_start)[i];
+ uint64_t entry = ((uint64_t *)xsdt->ptrs_start)[i];
+ if (entry == 0)
+ continue;
+ struct sdt *sdt = (void *)(uintptr_t)entry;
map_single_table((uintptr_t)sdt, (uint32_t)-1);
}
@@ -318,7 +321,10 @@ no_xsdt:;
map_single_table((uintptr_t)rsdt, (uint32_t)-1);
for (size_t i = 0; i < rsdt_entry_count; i++) {
- struct sdt *sdt = (void *)(uintptr_t)((uint32_t *)rsdt->ptrs_start)[i];
+ uint32_t entry = ((uint32_t *)rsdt->ptrs_start)[i];
+ if (entry == 0)
+ continue;
+ struct sdt *sdt = (void *)(uintptr_t)entry;
map_single_table((uintptr_t)sdt, (uint32_t)-1);
}
