DragonFlyBSD Kernel Audit
DF-0309 / fix.diff
← back to finding ↓ download raw
diff --git a/sys/net/ip_mroute/ip_mroute.c b/sys/net/ip_mroute/ip_mroute.c
--- a/sys/net/ip_mroute/ip_mroute.c
+++ b/sys/net/ip_mroute/ip_mroute.c
@@ -1253,6 +1253,13 @@
 		return ENOBUFS;
 	}
 
+		/*
+	 * XXX there is no global cap on the number of stalled (S, G) cache-miss
+	 * entries: MAX_UPQ only bounds the per-flow upcall queue. A remote multicast
+	 * flood of distinct flows can drive unbounded mbuf/kmalloc pressure while the
+	 * mrouter token is held. The full fix needs a global stall-entry counter with
+	 * eviction/backoff.
+	 */
 	mb0 = m_copypacket(m, M_NOWAIT);
 	if (mb0 && (M_HASCL(mb0) || mb0->m_len < hlen))
 	    mb0 = m_pullup(mb0, hlen);