Date: Thu, 26 Mar 2020 00:39:36 +0000 (UTC) From: Navdeep Parhar <np@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org Subject: svn commit: r359313 - stable/12/sys/dev/pci Message-ID: <202003260039.02Q0daLw002369@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: np Date: Thu Mar 26 00:39:36 2020 New Revision: 359313 URL: https://svnweb.freebsd.org/changeset/base/359313 Log: MFC r359057: 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@ Sponsored by: Chelsio Communications Differential Revision: https://reviews.freebsd.org/D23679 Modified: stable/12/sys/dev/pci/pci.c Directory Properties: stable/12/ (props changed) Modified: stable/12/sys/dev/pci/pci.c ============================================================================== --- stable/12/sys/dev/pci/pci.c Thu Mar 26 00:31:21 2020 (r359312) +++ stable/12/sys/dev/pci/pci.c Thu Mar 26 00:39:36 2020 (r359313) @@ -1105,16 +1105,16 @@ 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 */
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202003260039.02Q0daLw002369>