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)  static void tcpdiag_rcv(struct sock *sk, int len)  {  	struct sk_buff *skb; +	unsigned int qlen = skb_queue_len(&sk->sk_receive_queue); -	while ((skb = skb_dequeue(&sk->sk_receive_queue)) != NULL) { +	while (qlen-- && (skb = skb_dequeue(&sk->sk_receive_queue))) {  		tcpdiag_rcv_skb(skb);  		kfree_skb(skb);  	} | 
