summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordlg <dlg@openbsd.org>2016-02-01 23:34:31 +0000
committerdlg <dlg@openbsd.org>2016-02-01 23:34:31 +0000
commit812d031b1b0293ac72b15038b7d04914360c6261 (patch)
tree1d2de823422a412db86d1ef86f2616b5d01231ec
parentRemove A20 support in sxitimer, agtimer is now used instead. (diff)
downloadwireguard-openbsd-812d031b1b0293ac72b15038b7d04914360c6261.tar.xz
wireguard-openbsd-812d031b1b0293ac72b15038b7d04914360c6261.zip
add a DIAGNOSTIC for refcnt_take overflow.
ok mpi@
-rw-r--r--sys/kern/kern_synch.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/sys/kern/kern_synch.c b/sys/kern/kern_synch.c
index 874399d7024..da949842d4b 100644
--- a/sys/kern/kern_synch.c
+++ b/sys/kern/kern_synch.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: kern_synch.c,v 1.127 2016/01/15 11:42:47 dlg Exp $ */
+/* $OpenBSD: kern_synch.c,v 1.128 2016/02/01 23:34:31 dlg Exp $ */
/* $NetBSD: kern_synch.c,v 1.37 1996/04/22 01:38:37 christos Exp $ */
/*
@@ -607,7 +607,14 @@ refcnt_init(struct refcnt *r)
void
refcnt_take(struct refcnt *r)
{
+#ifdef DIAGNOSTIC
+ u_int refcnt;
+
+ refcnt = atomic_inc_int_nv(&r->refs);
+ KASSERT(refcnt != 0);
+#else
atomic_inc_int(&r->refs);
+#endif
}
int