Date: Wed, 22 Dec 2004 08:55:31 +0000 (GMT) From: Robert Watson <rwatson@freebsd.org> To: Alan Cox <alc@cs.rice.edu> Cc: current@freebsd.org Subject: Re: panic: sbflush_locked Message-ID: <Pine.NEB.3.96L.1041222085240.62809E-100000@fledge.watson.org> In-Reply-To: <20041220201953.GI1362@cs.rice.edu>
next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, 20 Dec 2004, Alan Cox wrote: > > I haven't seen this in a very long time, but I've definitely tried to > > track it down before with zero luck. > > With the attached change, I've had no more crashes. > > I speculate uipc_send() is missing needed synchronization on so_snd. > Robert, can you verify the patch? Sorry for the delay in responding to your original post; I'm still catching up with e-mail from my trip to Bangladesh. I actually had similar changes to this in the netperf branch at one point, but think I removed them due to concerns about lock order. However, this change is careful to acquire the send lock before the receive lock, so I think shouldn't present a problem from that perspective. Please go ahead and commit, perhaps with a 2 week MFC time? Thanks! Robert N M Watson FreeBSD Core Team, TrustedBSD Projects robert@fledge.watson.org Principal Research Scientist, McAfee Research > Index: kern/uipc_usrreq.c > =================================================================== > RCS file: /home/ncvs/src/sys/kern/uipc_usrreq.c,v > retrieving revision 1.143 > diff -u -r1.143 uipc_usrreq.c > --- kern/uipc_usrreq.c 1 Dec 2004 09:22:26 -0000 1.143 > +++ kern/uipc_usrreq.c 19 Dec 2004 03:22:50 -0000 > @@ -452,7 +452,9 @@ > } > } > > + SOCKBUF_LOCK(&so->so_snd); > if (so->so_snd.sb_state & SBS_CANTSENDMORE) { > + SOCKBUF_UNLOCK(&so->so_snd); > error = EPIPE; > break; > } > @@ -478,6 +480,7 @@ > (so2->so_rcv.sb_cc - unp->unp_conn->unp_cc); > (void)chgsbsize(so->so_cred->cr_uidinfo, &so->so_snd.sb_hiwat, > newhiwat, RLIM_INFINITY); > + SOCKBUF_UNLOCK(&so->so_snd); > unp->unp_conn->unp_cc = so2->so_rcv.sb_cc; > sorwakeup_locked(so2); > m = NULL;
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.NEB.3.96L.1041222085240.62809E-100000>