Merge remote-tracking branch 'lsk/v3.10/topic/usb' into linux-linaro-lsk
[firefly-linux-kernel-4.4.55.git] / net / ipv4 / inet_diag.c
index 31cf54d182215425b26d9d53f23c4d54d197add3..45dbdab915e200e789062d61a635a5e6df858c6e 100644 (file)
@@ -961,7 +961,7 @@ next_normal:
                        ++num;
                }
 
-               if (r->idiag_states & TCPF_TIME_WAIT) {
+               if (r->idiag_states & (TCPF_TIME_WAIT | TCPF_FIN_WAIT2)) {
                        struct inet_timewait_sock *tw;
 
                        inet_twsk_for_each(tw, node,
@@ -971,6 +971,8 @@ next_normal:
 
                                if (num < s_num)
                                        goto next_dying;
+                               if (!(r->idiag_states & (1 << tw->tw_substate)))
+                                       goto next_dying;
                                if (r->sdiag_family != AF_UNSPEC &&
                                                tw->tw_family != r->sdiag_family)
                                        goto next_dying;