]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
net: call prot->release_cb() when processing backlog
authorEric Dumazet <edumazet@google.com>
Mon, 11 Sep 2023 17:05:30 +0000 (17:05 +0000)
committerPaolo Abeni <pabeni@redhat.com>
Tue, 12 Sep 2023 17:10:01 +0000 (19:10 +0200)
__sk_flush_backlog() / sk_flush_backlog() are used
when TCP recvmsg()/sendmsg() process large chunks,
to not let packets in the backlog too long.

It makes sense to call tcp_release_cb() to also
process actions held in sk->sk_tsq_flags for smoother
scheduling.

Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
net/core/sock.c

index 21610e3845a5042f7c648ccb3e0d90126df20a0b..bb89b88bc1e8a042c4ee40b3c8345dc58cb1b369 100644 (file)
@@ -3001,6 +3001,9 @@ void __sk_flush_backlog(struct sock *sk)
 {
        spin_lock_bh(&sk->sk_lock.slock);
        __release_sock(sk);
+
+       if (sk->sk_prot->release_cb)
+               sk->sk_prot->release_cb(sk);
        spin_unlock_bh(&sk->sk_lock.slock);
 }
 EXPORT_SYMBOL_GPL(__sk_flush_backlog);