From: Eric Dumazet <[email protected]> Date: Thu, 22 Oct 2015 08:20:46 -0700
> From: Eric Dumazet <[email protected]> > > Multiple cpus can process duplicates of incoming ACK messages > matching a SYN_RECV request socket. This is a rare event under > normal operations, but definitely can happen. > > Only one must win the race, otherwise corruption would occur. > > To fix this without adding new atomic ops, we use logic in > inet_ehash_nolisten() to detect the request was present in the same > ehash bucket where we try to insert the new child. > > If request socket was not found, we have to undo the child creation. > > This actually removes a spin_lock()/spin_unlock() pair in > reqsk_queue_unlink() for the fast path. > > Fixes: e994b2f0fb92 ("tcp: do not lock listener to process SYN packets") > Fixes: 079096f103fa ("tcp/dccp: install syn_recv requests into ehash table") > Signed-off-by: Eric Dumazet <[email protected]> Applied, thanks. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
