summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authordwmalone <dwmalone@FreeBSD.org>2000-10-08 09:52:50 +0000
committerdwmalone <dwmalone@FreeBSD.org>2000-10-08 09:52:50 +0000
commitd5264134474d441cb1bae45ac8a328d07fbd747b (patch)
treec7e5983f50103a34ba59349e5e6d0eb0c061d2a1 /sys
parentde2abcbc972970b14e7e77b8bc8f6696d560ec34 (diff)
downloadFreeBSD-src-d5264134474d441cb1bae45ac8a328d07fbd747b.zip
FreeBSD-src-d5264134474d441cb1bae45ac8a328d07fbd747b.tar.gz
KASSERT that mbuf external reference counts are > 0 before we remove
a reference. (Agreed to by Bosko some time ago).
Diffstat (limited to 'sys')
-rw-r--r--sys/sys/mbuf.h5
1 files changed, 4 insertions, 1 deletions
diff --git a/sys/sys/mbuf.h b/sys/sys/mbuf.h
index 2d49f1b..d59ab54 100644
--- a/sys/sys/mbuf.h
+++ b/sys/sys/mbuf.h
@@ -283,7 +283,10 @@ struct mcntfree_lst {
*/
#define MEXT_IS_REF(m) ((m)->m_ext.ref_cnt->refcnt > 1)
-#define MEXT_REM_REF(m) atomic_subtract_long(&((m)->m_ext.ref_cnt->refcnt), 1)
+#define MEXT_REM_REF(m) do { \
+ KASSERT((m)->m_ext.ref_cnt->refcnt > 0, ("m_ext refcnt < 0")); \
+ atomic_subtract_long(&((m)->m_ext.ref_cnt->refcnt), 1); \
+ } while(0)
#define MEXT_ADD_REF(m) atomic_add_long(&((m)->m_ext.ref_cnt->refcnt), 1)
OpenPOWER on IntegriCloud