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-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to