diff options
author | Andre Oppermann <andre@FreeBSD.org> | 2005-11-04 17:20:53 +0000 |
---|---|---|
committer | Andre Oppermann <andre@FreeBSD.org> | 2005-11-04 17:20:53 +0000 |
commit | a5f7708723528bd1643fded737513815df9e3e15 (patch) | |
tree | 6fd7fe096545c90fb4216ae8f8172a94f08c19a3 /sys/kern/kern_mbuf.c | |
parent | 393109a1a28bfabcdbe52be5f2736566706025f4 (diff) | |
download | src-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.c | 7 |
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 |