diff options
-rw-r--r-- | sys/kern/uipc_mbuf.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/sys/kern/uipc_mbuf.c b/sys/kern/uipc_mbuf.c index 2c8af1f..339e05d 100644 --- a/sys/kern/uipc_mbuf.c +++ b/sys/kern/uipc_mbuf.c @@ -237,7 +237,7 @@ mb_free_ext(struct mbuf *m) */ if (m->m_ext.ext_type == EXT_PACKET) { uma_zfree(zone_pack, m); - break; + return; } else if (m->m_ext.ext_type == EXT_CLUSTER) { uma_zfree(zone_clust, m->m_ext.ext_buf); m->m_ext.ext_buf = NULL; @@ -246,13 +246,14 @@ mb_free_ext(struct mbuf *m) m->m_ext.ext_args); if (m->m_ext.ext_type != EXT_EXTREF) free(m->m_ext.ref_cnt, M_MBUF); + m->m_ext.ext_buf = NULL; } - uma_zfree(zone_mbuf, m); } /* Decrement (and potentially free) done, safely. */ break; } } while (1); + uma_zfree(zone_mbuf, m); } /* |