From: Stefan Metzmacher Date: Wed, 26 Oct 2022 23:25:59 +0000 (+0100) Subject: net: also flag accepted sockets supporting msghdr originated zerocopy X-Git-Tag: v6.0.8~38 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=cb525522fccc24baf0ca8181d54f2dd7b631bdc7;p=thirdparty%2Fkernel%2Fstable.git net: also flag accepted sockets supporting msghdr originated zerocopy commit 71b7786ea478f3c4611deff4d2b9676b0c17c56b upstream. Without this only the client initiated tcp sockets have SOCK_SUPPORT_ZC. The listening socket on the server also has it, but the accepted connections didn't, which meant IORING_OP_SEND[MSG]_ZC will always fails with -EOPNOTSUPP. Fixes: e993ffe3da4b ("net: flag sockets supporting msghdr originated zerocopy") Cc: # 6.0 CC: Jens Axboe Link: https://lore.kernel.org/io-uring/20221024141503.22b4e251@kernel.org/T/#m38aa19b0b825758fb97860a38ad13122051f9dda Signed-off-by: Stefan Metzmacher Signed-off-by: Pavel Begunkov Signed-off-by: Jakub Kicinski Signed-off-by: Greg Kroah-Hartman --- diff --git a/net/ipv4/af_inet.c b/net/ipv4/af_inet.c index 3ca0cc4678862..7f6d7c355e38e 100644 --- a/net/ipv4/af_inet.c +++ b/net/ipv4/af_inet.c @@ -748,6 +748,8 @@ int inet_accept(struct socket *sock, struct socket *newsock, int flags, (TCPF_ESTABLISHED | TCPF_SYN_RECV | TCPF_CLOSE_WAIT | TCPF_CLOSE))); + if (test_bit(SOCK_SUPPORT_ZC, &sock->flags)) + set_bit(SOCK_SUPPORT_ZC, &newsock->flags); sock_graft(sk2, newsock); newsock->state = SS_CONNECTED;