+22
−0
Loading
If memcg is enabled, accept() acquires lock_sock() twice for each new TCP/MPTCP socket in inet_csk_accept() and __inet_accept(). Let's move memcg operations from inet_csk_accept() to __inet_accept(). Note that SCTP somehow allocates a new socket by sk_alloc() in sk->sk_prot->accept() and clones fields manually, instead of using sk_clone_lock(). mem_cgroup_sk_alloc() is called for SCTP before __inet_accept(), so I added the protocol check in __inet_accept(), but this can be removed once SCTP uses sk_clone_lock(). Signed-off-by:Kuniyuki Iwashima <kuniyu@google.com> Signed-off-by:
Martin KaFai Lau <martin.lau@kernel.org> Reviewed-by:
Shakeel Butt <shakeel.butt@linux.dev> Reviewed-by:
Eric Dumazet <edumazet@google.com> Acked-by:
Roman Gushchin <roman.gushchin@linux.dev> Link: https://patch.msgid.link/20251014235604.3057003-2-kuniyu@google.com