Author: adrian
Date: Sun Mar 15 20:09:47 2015
New Revision: 280050
URL: https://svnweb.freebsd.org/changeset/base/280050

Log:
  Fix mbuf mapping errors in wpi_cmd2() + add check for nsegs
  
  PR:           kern/197143
  Submitted by: Andriy Voskoboinyk <s3er...@gmail.com>

Modified:
  head/sys/dev/wpi/if_wpi.c

Modified: head/sys/dev/wpi/if_wpi.c
==============================================================================
--- head/sys/dev/wpi/if_wpi.c   Sun Mar 15 19:37:07 2015        (r280049)
+++ head/sys/dev/wpi/if_wpi.c   Sun Mar 15 20:09:47 2015        (r280050)
@@ -2272,7 +2272,7 @@ wpi_cmd2(struct wpi_softc *sc, struct wp
        }
        if (error != 0) {
                /* Too many DMA segments, linearize mbuf. */
-               m1 = m_collapse(buf->m, M_NOWAIT, WPI_MAX_SCATTER);
+               m1 = m_collapse(buf->m, M_NOWAIT, WPI_MAX_SCATTER - 1);
                if (m1 == NULL) {
                        device_printf(sc->sc_dev,
                            "%s: could not defrag mbuf\n", __func__);
@@ -2291,6 +2291,10 @@ wpi_cmd2(struct wpi_softc *sc, struct wp
                }
        }
 
+       KASSERT(nsegs < WPI_MAX_SCATTER,
+           ("too many DMA segments, nsegs (%d) should be less than %d",
+            nsegs, WPI_MAX_SCATTER));
+
        data->m = buf->m;
        data->ni = buf->ni;
 
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to