PCI/VPD: Treat initial 0xff as missing EEPROM
Previously we assumed that the first tag being 0x00 meant an EEPROM was missing. The first tag being 0xff means the same thing; check for that also. [bhelgaas: rework error mesage] Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com> Reviewed-by: Hannes Reinecke <hare@suse.de>
This commit is contained in:
parent
70730db0f6
commit
4e0d77f8e8
@ -78,10 +78,8 @@ static size_t pci_vpd_size(struct pci_dev *dev, size_t old_size)
|
||||
while (off < old_size && pci_read_vpd(dev, off, 1, header) == 1) {
|
||||
unsigned char tag;
|
||||
|
||||
if (!header[0] && !off) {
|
||||
pci_info(dev, "Invalid VPD tag 00, assume missing optional VPD EPROM\n");
|
||||
return 0;
|
||||
}
|
||||
if (off == 0 && (header[0] == 0x00 || header[0] == 0xff))
|
||||
goto error;
|
||||
|
||||
if (header[0] & PCI_VPD_LRDT) {
|
||||
/* Large Resource Data Type Tag */
|
||||
@ -113,6 +111,12 @@ static size_t pci_vpd_size(struct pci_dev *dev, size_t old_size)
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
|
||||
error:
|
||||
pci_info(dev, "invalid VPD tag %#04x at offset %zu%s\n",
|
||||
header[0], off, off == 0 ?
|
||||
"; assume missing optional EEPROM" : "");
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
|
Loading…
Reference in New Issue
Block a user