DragonFlyBSD Kernel Audit
DF-0380 / fix.diff
← back to finding ↓ download raw
diff --git a/sys/netgraph/netgraph/ng_base.c b/sys/netgraph/netgraph/ng_base.c
--- a/sys/netgraph/netgraph/ng_base.c
+++ b/sys/netgraph/netgraph/ng_base.c
@@ -474,7 +474,7 @@
 ng_unref(node_p node)
 {
 	crit_enter();
-	if (--node->refs <= 0) {
+	if (atomic_fetchadd_int((int *)&node->refs, -1) == 1) {
 		node->type->refs--;
 		LIST_REMOVE(node, nodes);
 		LIST_REMOVE(node, idnodes);