net: Flush deferred skb free on socket destroy
The cited Fixes patch moved to a deferred skb approach where the skbs
are not freed immediately under the socket lock. Add a WARN_ON_ONCE()
to verify the deferred list is empty on socket destroy, and empty it to
prevent potential memory leaks.
Fixes: f35f821935
("tcp: defer skb freeing after socket lock is released")
Signed-off-by: Gal Pressman <gal@nvidia.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
db094aa814
commit
79074a72d3
|
@ -2049,6 +2049,9 @@ void sk_destruct(struct sock *sk)
|
|||
{
|
||||
bool use_call_rcu = sock_flag(sk, SOCK_RCU_FREE);
|
||||
|
||||
WARN_ON_ONCE(!llist_empty(&sk->defer_list));
|
||||
sk_defer_free_flush(sk);
|
||||
|
||||
if (rcu_access_pointer(sk->sk_reuseport_cb)) {
|
||||
reuseport_detach_sock(sk);
|
||||
use_call_rcu = true;
|
||||
|
|
Loading…
Reference in New Issue