acpi: handle machines with no MCFG Syzkaller died during early boot after ACPI init and before/during PCI. It's likely the VM it runs in doesn't have an MCFG, and we weren't handling that case when PCI queried a device's MMIO config space. Reported-by: syzbot+3feb100d5398d8b5d728@syzkaller.appspotmail.com Signed-off-by: Barret Rhoden <brho@cs.berkeley.edu>
diff --git a/kern/drivers/dev/acpi.c b/kern/drivers/dev/acpi.c index aa9f971..91e4d09 100644 --- a/kern/drivers/dev/acpi.c +++ b/kern/drivers/dev/acpi.c
@@ -1409,7 +1409,11 @@ physaddr_t acpi_pci_get_mmio_cfg_addr(int segment, int bus, int dev, int func) { - struct acpi_mcfg_data *tbl = mcfgtbl->tbl; + struct acpi_mcfg_data *tbl; + + if (!mcfgtbl) + return 0; + tbl = mcfgtbl->tbl; for (int i = 0; i < tbl->nr_entries; i++) { if (segment == tbl->entries[i].segment &&