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 <pabeni@redhat.com>
Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
        __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);
                __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))