kern/116034: Giant not owned
at /usr/src/sys/netinet/tcp_sack.c:271=tcp_clean_sackreport(tp)
Robert Watson
rwatson at FreeBSD.org
Tue Dec 4 08:44:04 PST 2007
On Mon, 3 Sep 2007, Dan Lukes wrote:
> add NET_LOCK_GIANT() / NET_UNLOCK_GIANT() into tcp_drain() unless someone
> smarter than me claim that Giant is NOT required here
There's actually a slightly more general problem here--could you try this more
general patch? I've requested to merge this to 6.3.
Robert N M Watson
Computer Laboratory
University of Cambridge
Index: kern_mbuf.c
===================================================================
RCS file: /home/ncvs/src/sys/kern/kern_mbuf.c,v
retrieving revision 1.9.2.9
diff -u -r1.9.2.9 kern_mbuf.c
--- kern_mbuf.c 11 Feb 2007 03:31:18 -0000 1.9.2.9
+++ kern_mbuf.c 4 Dec 2007 15:53:52 -0000
@@ -550,9 +550,11 @@
WITNESS_WARN(WARN_GIANTOK | WARN_SLEEPOK | WARN_PANIC, NULL,
"mb_reclaim()");
+ NET_LOCK_GIANT();
mbstat.m_drain++;
for (dp = domains; dp != NULL; dp = dp->dom_next)
for (pr = dp->dom_protosw; pr < dp->dom_protoswNPROTOSW; pr++)
if (pr->pr_drain != NULL)
(*pr->pr_drain)();
+ NET_UNLOCK_GIANT();
}
More information about the freebsd-bugs
mailing list