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

Reply via email to