tcp/dccp: remove obsolete WARN_ON() in icmp handlers
Now SYN_RECV request sockets are installed in ehash table, an ICMP
handler can find a request socket while another cpu handles an incoming
packet transforming this SYN_RECV request socket into an ESTABLISHED
socket.
We need to remove the now obsolete WARN_ON(req->sk), since req->sk
is set when a new child is created and added into listener accept queue.
If this race happens, the ICMP will do nothing special.
Fixes: 079096f103
("tcp/dccp: install syn_recv requests into ehash table")
Signed-off-by: Eric Dumazet <edumazet@google.com>
Reported-by: Ben Lazarus <blazarus@google.com>
Reported-by: Neal Cardwell <ncardwell@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
f6773c5e95
commit
e316ea62e3
|
@ -204,8 +204,6 @@ void dccp_req_err(struct sock *sk, u64 seq)
|
||||||
* ICMPs are not backlogged, hence we cannot get an established
|
* ICMPs are not backlogged, hence we cannot get an established
|
||||||
* socket here.
|
* socket here.
|
||||||
*/
|
*/
|
||||||
WARN_ON(req->sk);
|
|
||||||
|
|
||||||
if (!between48(seq, dccp_rsk(req)->dreq_iss, dccp_rsk(req)->dreq_gss)) {
|
if (!between48(seq, dccp_rsk(req)->dreq_iss, dccp_rsk(req)->dreq_gss)) {
|
||||||
NET_INC_STATS_BH(net, LINUX_MIB_OUTOFWINDOWICMPS);
|
NET_INC_STATS_BH(net, LINUX_MIB_OUTOFWINDOWICMPS);
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -319,8 +319,6 @@ void tcp_req_err(struct sock *sk, u32 seq, bool abort)
|
||||||
/* ICMPs are not backlogged, hence we cannot get
|
/* ICMPs are not backlogged, hence we cannot get
|
||||||
* an established socket here.
|
* an established socket here.
|
||||||
*/
|
*/
|
||||||
WARN_ON(req->sk);
|
|
||||||
|
|
||||||
if (seq != tcp_rsk(req)->snt_isn) {
|
if (seq != tcp_rsk(req)->snt_isn) {
|
||||||
NET_INC_STATS_BH(net, LINUX_MIB_OUTOFWINDOWICMPS);
|
NET_INC_STATS_BH(net, LINUX_MIB_OUTOFWINDOWICMPS);
|
||||||
} else if (abort) {
|
} else if (abort) {
|
||||||
|
|
Loading…
Reference in New Issue