aboutsummaryrefslogtreecommitdiff
path: root/sys/kern/kern_mbuf.c
diff options
context:
space:
mode:
authorAndre Oppermann <andre@FreeBSD.org>2005-11-04 17:20:53 +0000
committerAndre Oppermann <andre@FreeBSD.org>2005-11-04 17:20:53 +0000
commita5f7708723528bd1643fded737513815df9e3e15 (patch)
tree6fd7fe096545c90fb4216ae8f8172a94f08c19a3 /sys/kern/kern_mbuf.c
parent393109a1a28bfabcdbe52be5f2736566706025f4 (diff)
downloadsrc-a5f7708723528bd1643fded737513815df9e3e15.tar.gz
src-a5f7708723528bd1643fded737513815df9e3e15.zip
Fix a logic error introduced with mandatory mbuf cluster refcounting and
freeing of mbufs+clusters back to the packet zone.
Notes
Notes: svn path=/head/; revision=152035
Diffstat (limited to 'sys/kern/kern_mbuf.c')
-rw-r--r--sys/kern/kern_mbuf.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/sys/kern/kern_mbuf.c b/sys/kern/kern_mbuf.c
index e02acca334b9..ffb3e802fe10 100644
--- a/sys/kern/kern_mbuf.c
+++ b/sys/kern/kern_mbuf.c
@@ -395,11 +395,10 @@ mb_ctor_clust(void *mem, int size, void *arg, int how)
static void
mb_dtor_clust(void *mem, int size, void *arg)
{
- u_int *refcnt;
- refcnt = uma_find_refcnt(zone_clust, mem);
- KASSERT(*refcnt == 1, ("%s: refcnt incorrect %u", __func__, *refcnt));
- *refcnt = 0;
+ KASSERT(*(uma_find_refcnt(zone_clust, mem)) <= 1,
+ ("%s: refcnt incorrect %u", __func__,
+ *(uma_find_refcnt(zone_clust, mem))) );
#ifdef INVARIANTS
trash_dtor(mem, size, arg);
#endif