svn commit: r280050 - head/sys/dev/wpi

Adrian Chadd adrian at FreeBSD.org
Sun Mar 15 20:09:48 UTC 2015


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 <s3erios at 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;
 


More information about the svn-src-head mailing list