diff options
Diffstat (limited to 'net/ipv4/tcp_diag.c')
| -rw-r--r-- | net/ipv4/tcp_diag.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/net/ipv4/tcp_diag.c b/net/ipv4/tcp_diag.c index 313c1408da33..8faa8948f75c 100644 --- a/net/ipv4/tcp_diag.c +++ b/net/ipv4/tcp_diag.c | |||
| @@ -777,8 +777,9 @@ static inline void tcpdiag_rcv_skb(struct sk_buff *skb) | |||
| 777 | static void tcpdiag_rcv(struct sock *sk, int len) | 777 | static void tcpdiag_rcv(struct sock *sk, int len) |
| 778 | { | 778 | { |
| 779 | struct sk_buff *skb; | 779 | struct sk_buff *skb; |
| 780 | unsigned int qlen = skb_queue_len(&sk->sk_receive_queue); | ||
| 780 | 781 | ||
| 781 | while ((skb = skb_dequeue(&sk->sk_receive_queue)) != NULL) { | 782 | while (qlen-- && (skb = skb_dequeue(&sk->sk_receive_queue))) { |
| 782 | tcpdiag_rcv_skb(skb); | 783 | tcpdiag_rcv_skb(skb); |
| 783 | kfree_skb(skb); | 784 | kfree_skb(skb); |
| 784 | } | 785 | } |
