Skip to content

Commit e5e2e43

Browse files
Geliang Tangkuba-moo
authored andcommitted
mptcp: allow overridden write_space to be invoked
Future extensions with psock will override their own sk->sk_write_space callback. This patch ensures that the overridden sk_write_space can be invoked by MPTCP. INDIRECT_CALL is used to keep the default path optimised. Note that sk->sk_write_space was never called directly with MPTCP sockets, so changing it to sk_stream_write_space in the init, and using it from mptcp_write_space() is not supposed to change the current behaviour. This patch is shared early to ease discussions around future RFC and avoid confusions with this "fix" that is needed for different future extensions. Suggested-by: Paolo Abeni <pabeni@redhat.com> Co-developed-by: Gang Yan <yangang@kylinos.cn> Signed-off-by: Gang Yan <yangang@kylinos.cn> Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn> Reviewed-by: Matthieu Baerts (NGI0) <matttbe@kernel.org> Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org> Link: https://patch.msgid.link/20260206-net-next-mptcp-write_space-override-v2-1-e0b12be818c6@kernel.org Signed-off-by: Jakub Kicinski <kuba@kernel.org>
1 parent f2c7fde commit e5e2e43

2 files changed

Lines changed: 2 additions & 1 deletion

File tree

net/mptcp/protocol.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3058,6 +3058,7 @@ static int mptcp_init_sock(struct sock *sk)
30583058
sk_sockets_allocated_inc(sk);
30593059
sk->sk_rcvbuf = READ_ONCE(net->ipv4.sysctl_tcp_rmem[1]);
30603060
sk->sk_sndbuf = READ_ONCE(net->ipv4.sysctl_tcp_wmem[1]);
3061+
sk->sk_write_space = sk_stream_write_space;
30613062

30623063
return 0;
30633064
}

net/mptcp/protocol.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -975,7 +975,7 @@ static inline void mptcp_write_space(struct sock *sk)
975975
/* pairs with memory barrier in mptcp_poll */
976976
smp_mb();
977977
if (mptcp_stream_memory_free(sk, 1))
978-
sk_stream_write_space(sk);
978+
INDIRECT_CALL_1(sk->sk_write_space, sk_stream_write_space, sk);
979979
}
980980

981981
static inline void __mptcp_sync_sndbuf(struct sock *sk)

0 commit comments

Comments
 (0)