svn commit: r359057 - head/sys/dev/pci

Navdeep Parhar np at FreeBSD.org
Wed Mar 18 01:09:42 UTC 2020


Author: np
Date: Wed Mar 18 01:09:40 2020
New Revision: 359057
URL: https://svnweb.freebsd.org/changeset/base/359057

Log:
  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

Modified:
  head/sys/dev/pci/pci.c

Modified: head/sys/dev/pci/pci.c
==============================================================================
--- head/sys/dev/pci/pci.c	Tue Mar 17 23:58:58 2020	(r359056)
+++ head/sys/dev/pci/pci.c	Wed Mar 18 01:09:40 2020	(r359057)
@@ -1102,16 +1102,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 */


More information about the svn-src-all mailing list