Remove spurious warning about invalid VPD data.
The warning used to be displayed for valid VPDs about 512B or above in size. Fix the size check and add a break while here so that the routine stops if if detects any problem. Tested with "pciconf -lV" Reviewed by: kib@, jhb@ MFC after: 1 week Sponsored by: Chelsio Communications Differential Revision: https://reviews.freebsd.org/D23679
This commit is contained in:
parent
7a9cfa086a
commit
a8f48cf82f
@ -1102,17 +1102,17 @@ pci_read_vpd(device_t pcib, pcicfgregs *cfg)
|
||||
break;
|
||||
}
|
||||
remain |= byte2 << 8;
|
||||
if (remain > (0x7f*4 - vrs.off)) {
|
||||
state = -1;
|
||||
pci_printf(cfg,
|
||||
"invalid VPD data, remain %#x\n",
|
||||
remain);
|
||||
}
|
||||
name = byte & 0x7f;
|
||||
} else {
|
||||
remain = byte & 0x7;
|
||||
name = (byte >> 3) & 0xf;
|
||||
}
|
||||
if (vrs.off + remain - vrs.bytesinval > 0x8000) {
|
||||
pci_printf(cfg,
|
||||
"VPD data overflow, remain %#x\n", remain);
|
||||
state = -1;
|
||||
break;
|
||||
}
|
||||
switch (name) {
|
||||
case 0x2: /* String */
|
||||
cfg->vpd.vpd_ident = malloc(remain + 1,
|
||||
|
Loading…
x
Reference in New Issue
Block a user