inet_diag: adjust inet_sk_diag_fill() bug condition
authorEric Dumazet <edumazet@google.com>
Fri, 13 Mar 2015 22:51:11 +0000 (15:51 -0700)
committerDavid S. Miller <davem@davemloft.net>
Sat, 14 Mar 2015 19:05:10 +0000 (15:05 -0400)
inet_sk_diag_fill() only copes with non timewait and non request socks

Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv4/inet_diag.c

index e1e4d8c0384a11d6f424f9c8a147612d1bd22cad..d827fe2e3ce0a38a68ceb83a5dcd81a254944e63 100644 (file)
@@ -93,7 +93,7 @@ int inet_sk_diag_fill(struct sock *sk, struct inet_connection_sock *icsk,
                return -EMSGSIZE;
 
        r = nlmsg_data(nlh);
-       BUG_ON(sk->sk_state == TCP_TIME_WAIT);
+       BUG_ON((1 << sk->sk_state) & (TCPF_TIME_WAIT | TCPF_NEW_SYN_RECV));
 
        r->idiag_family = sk->sk_family;
        r->idiag_state = sk->sk_state;