Patch "net: use indirect calls helpers for sk_exit_memory_pressure()" has been added to the 6.1-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    net: use indirect calls helpers for sk_exit_memory_pressure()

to the 6.1-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     net-use-indirect-calls-helpers-for-sk_exit_memory_pr.patch
and it can be found in the queue-6.1 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 2cce7b4b4f0a92a0035f45101eb87d29dfe49366
Author: Brian Vazquez <brianvv@xxxxxxxxxx>
Date:   Wed Mar 1 13:32:47 2023 +0000

    net: use indirect calls helpers for sk_exit_memory_pressure()
    
    [ Upstream commit 5c1ebbfabcd61142a4551bfc0e51840f9bdae7af ]
    
    Florian reported a regression and sent a patch with the following
    changelog:
    
    <quote>
     There is a noticeable tcp performance regression (loopback or cross-netns),
     seen with iperf3 -Z (sendfile mode) when generic retpolines are needed.
    
     With SK_RECLAIM_THRESHOLD checks gone number of calls to enter/leave
     memory pressure happen much more often. For TCP indirect calls are
     used.
    
     We can't remove the if-set-return short-circuit check in
     tcp_enter_memory_pressure because there are callers other than
     sk_enter_memory_pressure.  Doing a check in the sk wrapper too
     reduces the indirect calls enough to recover some performance.
    
     Before,
     0.00-60.00  sec   322 GBytes  46.1 Gbits/sec                  receiver
    
     After:
     0.00-60.04  sec   359 GBytes  51.4 Gbits/sec                  receiver
    
     "iperf3 -c $peer -t 60 -Z -f g", connected via veth in another netns.
    </quote>
    
    It seems we forgot to upstream this indirect call mitigation we
    had for years, lets do this instead.
    
    [edumazet] - It seems we forgot to upstream this indirect call
                 mitigation we had for years, let's do this instead.
               - Changed to INDIRECT_CALL_INET_1() to avoid bots reports.
    
    Fixes: 4890b686f408 ("net: keep sk->sk_forward_alloc as small as possible")
    Reported-by: Florian Westphal <fw@xxxxxxxxx>
    Link: https://lore.kernel.org/netdev/20230227152741.4a53634b@xxxxxxxxxx/T/
    Signed-off-by: Brian Vazquez <brianvv@xxxxxxxxxx>
    Signed-off-by: Eric Dumazet <edumazet@xxxxxxxxxx>
    Link: https://lore.kernel.org/r/20230301133247.2346111-1-edumazet@xxxxxxxxxx
    Signed-off-by: Paolo Abeni <pabeni@xxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/net/core/sock.c b/net/core/sock.c
index 4dfdcdfd00114..eb0b76acd9df1 100644
--- a/net/core/sock.c
+++ b/net/core/sock.c
@@ -2805,7 +2805,8 @@ static void sk_enter_memory_pressure(struct sock *sk)
 static void sk_leave_memory_pressure(struct sock *sk)
 {
 	if (sk->sk_prot->leave_memory_pressure) {
-		sk->sk_prot->leave_memory_pressure(sk);
+		INDIRECT_CALL_INET_1(sk->sk_prot->leave_memory_pressure,
+				     tcp_leave_memory_pressure, sk);
 	} else {
 		unsigned long *memory_pressure = sk->sk_prot->memory_pressure;
 



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux