aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv4/tcp_diag.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/ipv4/tcp_diag.c')
-rw-r--r--net/ipv4/tcp_diag.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/net/ipv4/tcp_diag.c b/net/ipv4/tcp_diag.c
index c148c1081880..57c5f0b10e6c 100644
--- a/net/ipv4/tcp_diag.c
+++ b/net/ipv4/tcp_diag.c
@@ -11,7 +11,6 @@
11 * 2 of the License, or (at your option) any later version. 11 * 2 of the License, or (at your option) any later version.
12 */ 12 */
13 13
14#include <linux/config.h>
15 14
16#include <linux/module.h> 15#include <linux/module.h>
17#include <linux/inet_diag.h> 16#include <linux/inet_diag.h>
@@ -26,7 +25,10 @@ static void tcp_diag_get_info(struct sock *sk, struct inet_diag_msg *r,
26 const struct tcp_sock *tp = tcp_sk(sk); 25 const struct tcp_sock *tp = tcp_sk(sk);
27 struct tcp_info *info = _info; 26 struct tcp_info *info = _info;
28 27
29 r->idiag_rqueue = tp->rcv_nxt - tp->copied_seq; 28 if (sk->sk_state == TCP_LISTEN)
29 r->idiag_rqueue = sk->sk_ack_backlog;
30 else
31 r->idiag_rqueue = tp->rcv_nxt - tp->copied_seq;
30 r->idiag_wqueue = tp->write_seq - tp->snd_una; 32 r->idiag_wqueue = tp->write_seq - tp->snd_una;
31 if (info != NULL) 33 if (info != NULL)
32 tcp_get_info(sk, info); 34 tcp_get_info(sk, info);