diff --git a/sys/amd64/pci/pci_cfgreg.c b/sys/amd64/pci/pci_cfgreg.c index 1562fd953829..0d943f36cbde 100644 --- a/sys/amd64/pci/pci_cfgreg.c +++ b/sys/amd64/pci/pci_cfgreg.c @@ -169,7 +169,8 @@ pci_cfgregopen(void) i < (pt->pt_header.ph_length); i++) { ck += cv[i]; } - if (ck == 0) { + if (ck == 0 && pt->pt_header.ph_length > + sizeof(struct PIR_header)) { pci_route_table = pt; pci_route_count = (pt->pt_header.ph_length - sizeof(struct PIR_header)) / diff --git a/sys/i386/pci/pci_cfgreg.c b/sys/i386/pci/pci_cfgreg.c index 1562fd953829..0d943f36cbde 100644 --- a/sys/i386/pci/pci_cfgreg.c +++ b/sys/i386/pci/pci_cfgreg.c @@ -169,7 +169,8 @@ pci_cfgregopen(void) i < (pt->pt_header.ph_length); i++) { ck += cv[i]; } - if (ck == 0) { + if (ck == 0 && pt->pt_header.ph_length > + sizeof(struct PIR_header)) { pci_route_table = pt; pci_route_count = (pt->pt_header.ph_length - sizeof(struct PIR_header)) / diff --git a/sys/i386/pci/pci_pir.c b/sys/i386/pci/pci_pir.c index 1562fd953829..0d943f36cbde 100644 --- a/sys/i386/pci/pci_pir.c +++ b/sys/i386/pci/pci_pir.c @@ -169,7 +169,8 @@ pci_cfgregopen(void) i < (pt->pt_header.ph_length); i++) { ck += cv[i]; } - if (ck == 0) { + if (ck == 0 && pt->pt_header.ph_length > + sizeof(struct PIR_header)) { pci_route_table = pt; pci_route_count = (pt->pt_header.ph_length - sizeof(struct PIR_header)) /