|
|
@@ -1740,8 +1740,10 @@ static int tcp_v6_rcv(struct sk_buff *skb)
|
|
|
if (!tcp_prequeue(sk, skb))
|
|
|
ret = tcp_v6_do_rcv(sk, skb);
|
|
|
}
|
|
|
- } else
|
|
|
- sk_add_backlog(sk, skb);
|
|
|
+ } else if (sk_add_backlog_limited(sk, skb)) {
|
|
|
+ bh_unlock_sock(sk);
|
|
|
+ goto discard_and_relse;
|
|
|
+ }
|
|
|
bh_unlock_sock(sk);
|
|
|
|
|
|
sock_put(sk);
|