From: Stefan Metzmacher metze@samba.org
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: stable@vger.kernel.org # 6.0 CC: Jens Axboe axboe@kernel.dk Link: https://lore.kernel.org/io-uring/20221024141503.22b4e251@kernel.org/T/#m38aa... Signed-off-by: Stefan Metzmacher metze@samba.org Signed-off-by: Pavel Begunkov asml.silence@gmail.com Signed-off-by: Jakub Kicinski kuba@kernel.org Signed-off-by: Greg Kroah-Hartman gregkh@linuxfoundation.org --- net/ipv4/af_inet.c | 2 ++ 1 file changed, 2 insertions(+)
--- a/net/ipv4/af_inet.c +++ b/net/ipv4/af_inet.c @@ -748,6 +748,8 @@ int inet_accept(struct socket *sock, str (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;