Sure Let me add some comments for you. The idea her is that you pick-up a reference to the PCB.. so it can’t be removed. Thus when you re-lock the INP you check the dropped flag (just in case someone did get in).
Let me get that in comments.. (note thats also why when using this function you have to use its companion function to drop the reference). > On Aug 16, 2016, at 5:58 AM, Hans Petter Selasky <h...@selasky.org> wrote: > > 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 -------- Randall Stewart r...@netflix.com 803-317-4952 _______________________________________________ svn-src-all@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"