Date: Thu, 2 Jun 2011 04:57:09 +0000 From: "Bjoern A. Zeeb" <bz@FreeBSD.org> To: Robert Watson <rwatson@FreeBSD.org> Cc: current@FreeBSD.org Subject: Re: FYI: merging TCP, UDP, netisr locking changes Message-ID: <B1362197-7468-4738-A0DE-D82E7344011C@FreeBSD.org> In-Reply-To: <alpine.BSF.2.00.1105301051260.60306@fledge.watson.org> References: <alpine.BSF.2.00.1105241220100.9704@fledge.watson.org> <alpine.BSF.2.00.1105301051260.60306@fledge.watson.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On May 30, 2011, at 9:53 AM, Robert Watson wrote: >> This work has been sponsored by Juniper Networks. Thanks also to = Bjoern Zeeb, who has been reviewing changes! And pointy hat to me for missing this one:( > After a series of smaller commits, I've just merged some initial = decomposition of the pcbinfo lock into an additional pcbhash lock, which = changes lock ordering and lookup with respect to inpcbs significantly = (r222488; commit message below). I expect there to be some initial = instability as people shake out edge cases I didn't bump into in my = testing. Please report bugs to current@, and I'll pick them up there! Can you review the following I found this morning on my IPv6 only snapshot VM. We need to make sure all the src/tools/regression test cases equally run IPv6. Patches certainly welcome from the community! ! ! Do not leak the pcbinfohash lock in case in6_pcbladdr() errors ! for a tcp connect on IPv6. ! ! Submitted by: bz ! Index: sys/netinet/tcp_usrreq.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- sys/netinet/tcp_usrreq.c (revision 222591) +++ sys/netinet/tcp_usrreq.c (working copy) @@ -1158,7 +1158,7 @@ tcp6_connect(struct tcpcb *tp, struct sockaddr *na */ error =3D in6_pcbladdr(inp, nam, &addr6); if (error) - return error; + goto out; oinp =3D in6_pcblookup_hash_locked(inp->inp_pcbinfo, &sin6->sin6_addr, sin6->sin6_port, = IN6_IS_ADDR_UNSPECIFIED(&inp->in6p_laddr) --=20 Bjoern A. Zeeb You have to have visions! Stop bit received. Insert coin for new address family.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?B1362197-7468-4738-A0DE-D82E7344011C>