From: Eric Dumazet Date: Wed, 13 Sep 2023 12:58:35 +0000 (+0000) Subject: net: use indirect call helpers for sk->sk_prot->release_cb() X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=41862d12e77f78b4ecb59b028bf44de92991bda2;p=linux.git net: use indirect call helpers for sk->sk_prot->release_cb() When adding sk->sk_prot->release_cb() call from __sk_flush_backlog() Paolo suggested using indirect call helpers to take care of CONFIG_RETPOLINE=y case. It turns out Google had such mitigation for years in release_sock(), it is time to make this public :) Suggested-by: Paolo Abeni Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller --- diff --git a/net/core/sock.c b/net/core/sock.c index 213a62ac13f2e..a5995750c5c54 100644 --- a/net/core/sock.c +++ b/net/core/sock.c @@ -3003,7 +3003,9 @@ void __sk_flush_backlog(struct sock *sk) __release_sock(sk); if (sk->sk_prot->release_cb) - sk->sk_prot->release_cb(sk); + INDIRECT_CALL_INET_1(sk->sk_prot->release_cb, + tcp_release_cb, sk); + spin_unlock_bh(&sk->sk_lock.slock); } EXPORT_SYMBOL_GPL(__sk_flush_backlog); @@ -3523,7 +3525,8 @@ void release_sock(struct sock *sk) __release_sock(sk); if (sk->sk_prot->release_cb) - sk->sk_prot->release_cb(sk); + INDIRECT_CALL_INET_1(sk->sk_prot->release_cb, + tcp_release_cb, sk); sock_release_ownership(sk); if (waitqueue_active(&sk->sk_lock.wq))