acpi: Fix length of RSDP calculation
diff --git a/stage23/lib/acpi.c b/stage23/lib/acpi.c
index 2f9ddb8d..c5f2c3de 100644
--- a/stage23/lib/acpi.c
+++ b/stage23/lib/acpi.c
@@ -78,7 +78,10 @@ void *acpi_get_table(const char *signature, int index) {
else
rsdt = (struct rsdt *)(uintptr_t)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 *)(uintptr_t)((uint64_t *)rsdt->ptrs_start)[i];
