svn commit: r296292 - head/sys/kern
Gleb Smirnoff
glebius at FreeBSD.org
Wed Mar 2 02:12:02 UTC 2016
Author: glebius
Date: Wed Mar 2 02:12:01 2016
New Revision: 296292
URL: https://svnweb.freebsd.org/changeset/base/296292
Log:
Fix regression in r296242 affecting several drivers. For EXT_NET_DRV,
EXT_MOD_TYPE, EXT_DISPOSABLE types we should first execute the free
callback, then free the mbuf, otherwise we will derefernce memory that
was just freed.
Reported and tested: jhibbits
Modified:
head/sys/kern/kern_mbuf.c
Modified: head/sys/kern/kern_mbuf.c
==============================================================================
--- head/sys/kern/kern_mbuf.c Wed Mar 2 01:40:47 2016 (r296291)
+++ head/sys/kern/kern_mbuf.c Wed Mar 2 02:12:01 2016 (r296292)
@@ -677,8 +677,12 @@ mb_free_ext(struct mbuf *m)
case EXT_NET_DRV:
case EXT_MOD_TYPE:
case EXT_DISPOSABLE:
+ KASSERT(m->m_ext.ext_free != NULL,
+ ("%s: ext_free not set", __func__));
+ (*(m->m_ext.ext_free))(m, m->m_ext.ext_arg1,
+ m->m_ext.ext_arg2);
uma_zfree(zone_mbuf, mref);
- /* FALLTHROUGH */
+ break;
case EXT_EXTREF:
KASSERT(m->m_ext.ext_free != NULL,
("%s: ext_free not set", __func__));
More information about the svn-src-all
mailing list