Skip to content

Commit 79074a7

Browse files
gal-pressmandavem330
authored andcommitted
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: f35f821 ("tcp: defer skb freeing after socket lock is released") Signed-off-by: Gal Pressman <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent db094aa commit 79074a7

File tree

1 file changed

+3
-0
lines changed

1 file changed

+3
-0
lines changed

net/core/sock.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2049,6 +2049,9 @@ void sk_destruct(struct sock *sk)
20492049
{
20502050
bool use_call_rcu = sock_flag(sk, SOCK_RCU_FREE);
20512051

2052+
WARN_ON_ONCE(!llist_empty(&sk->defer_list));
2053+
sk_defer_free_flush(sk);
2054+
20522055
if (rcu_access_pointer(sk->sk_reuseport_cb)) {
20532056
reuseport_detach_sock(sk);
20542057
use_call_rcu = true;

0 commit comments

Comments
 (0)