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

Reply via email to