diff --git a/net/core/sock.c b/net/core/sock.c index e7405be8941f..e2401d735c5a 100644 --- a/net/core/sock.c +++ b/net/core/sock.c @@ -3333,7 +3333,7 @@ void __release_sock(struct sock *sk) spin_unlock_bh(&sk->sk_lock.slock); - while (1) { + do { next = skb->next; prefetch(next); DEBUG_NET_WARN_ON_ONCE(skb_dst_is_noref(skb)); @@ -3341,12 +3341,10 @@ void __release_sock(struct sock *sk) sk_backlog_rcv(sk, skb); skb = next; - if (!skb) - break; if (!(++nb & 15)) cond_resched(); - } + } while (skb); spin_lock_bh(&sk->sk_lock.slock); }