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 */
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to