Date: Tue, 16 Aug 2016 14:58:45 +0200 From: Hans Petter Selasky <hps@selasky.org> To: Randall Stewart <rrs@FreeBSD.org>, src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r304218 - head/sys/netinet Message-ID: <92a3cfc1-56bc-813f-dd12-ac19c66fd716@selasky.org> In-Reply-To: <201608161240.u7GCeuWS082118@repo.freebsd.org> References: <201608161240.u7GCeuWS082118@repo.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On 08/16/16 14:40, Randall Stewart wrote: > +int > +tcp_inpinfo_lock_add(struct inpcb *inp) > +{ > + in_pcbref(inp); > + INP_WUNLOCK(inp); > + INP_INFO_RLOCK(&V_tcbinfo); > + INP_WLOCK(inp); > + if (inp->inp_flags & (INP_TIMEWAIT | INP_DROPPED)) { > + return(1); > + } > + return(0); > + > +} Hi, Could you add some comments describing how it is considered safe to drop the INP write-lock and then pick it up again? My first impression is that because you are dropping the inp lock, multiple threads can enter the code in question, leaving the window open to races? --HPS
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?92a3cfc1-56bc-813f-dd12-ac19c66fd716>