diff options
author | bmilekic <bmilekic@FreeBSD.org> | 2004-06-11 18:17:25 +0000 |
---|---|---|
committer | bmilekic <bmilekic@FreeBSD.org> | 2004-06-11 18:17:25 +0000 |
commit | b75fa8ff5c6ffd5f71c21a674749e607ea6c7f8e (patch) | |
tree | d31a18e0058e11ef7a46302151ee15c2e4a2177c | |
parent | 89df59b845a65c061802e82eb8f72d028de0839f (diff) | |
download | FreeBSD-src-b75fa8ff5c6ffd5f71c21a674749e607ea6c7f8e.zip FreeBSD-src-b75fa8ff5c6ffd5f71c21a674749e607ea6c7f8e.tar.gz |
Gah! Plug a mbuf leak I introduced in the last commit.
I don the pointy-hat.
Problem reported by: Peter Holm <pho@>
-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); } /* |