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-all
mailing list