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:
+6
-6
@@ -1102,17 +1102,17 @@ pci_read_vpd(device_t pcib, pcicfgregs *cfg)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
remain |= byte2 << 8;
|
remain |= byte2 << 8;
|
||||||
if (remain > (0x7f*4 - vrs.off)) {
|
|
||||||
state = -1;
|
|
||||||
pci_printf(cfg,
|
|
||||||
"invalid VPD data, remain %#x\n",
|
|
||||||
remain);
|
|
||||||
}
|
|
||||||
name = byte & 0x7f;
|
name = byte & 0x7f;
|
||||||
} else {
|
} else {
|
||||||
remain = byte & 0x7;
|
remain = byte & 0x7;
|
||||||
name = (byte >> 3) & 0xf;
|
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) {
|
switch (name) {
|
||||||
case 0x2: /* String */
|
case 0x2: /* String */
|
||||||
cfg->vpd.vpd_ident = malloc(remain + 1,
|
cfg->vpd.vpd_ident = malloc(remain + 1,
|
||||||
|
|||||||
Reference in New Issue
Block a user