:: commit 2cfa5b281a5b528435c5414b5c23b55f69add713

mintsuki <mintsuki@protonmail.com> — 2021-03-10 01:27

parents: 7c4f71e532

acpi: Fix length of RSDP calculation

diff --git a/stage2/lib/acpi.c b/stage2/lib/acpi.c
index 15c41c6b..ba76d0e9 100644
--- a/stage2/lib/acpi.c
+++ b/stage2/lib/acpi.c
@@ -49,7 +49,10 @@ void *acpi_get_table(const char *signature, int index) {
     else
         rsdt = (struct rsdt *)rsdp->rsdt_addr;
 
-    for (size_t i = 0; i < rsdt->length - sizeof(struct sdt); i++) {
+    size_t entry_count =
+        (rsdt->length - sizeof(struct sdt)) / (use_xsdt ? 8 : 4);
+
+    for (size_t i = 0; i < entry_count; i++) {
         struct sdt *ptr;
         if (use_xsdt)
             ptr = (struct sdt *)(size_t)((uint64_t *)rsdt->ptrs_start)[i];
tab: 248 wrap: offon