net: flag sockets supporting msghdr originated zerocopy

We need an efficient way in io_uring to check whether a socket supports
zerocopy with msghdr provided ubuf_info. Add a new flag into the struct
socket flags fields.

Cc: <stable@vger.kernel.org> # 6.0
Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
Acked-by: Jakub Kicinski <kuba@kernel.org>
Link: https://lore.kernel.org/r/3dafafab822b1c66308bb58a0ac738b1e3f53f74.1666346426.git.asml.silence@gmail.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>

authored by Pavel Begunkov and committed by Jens Axboe e993ffe3 996d3efe

Changed files
+3
include
linux
net
ipv4
+1
include/linux/net.h
··· 41 41 #define SOCK_NOSPACE 2 42 42 #define SOCK_PASSCRED 3 43 43 #define SOCK_PASSSEC 4 44 + #define SOCK_SUPPORT_ZC 5 44 45 45 46 #ifndef ARCH_HAS_SOCKET_TYPES 46 47 /**
+1
net/ipv4/tcp.c
··· 457 457 WRITE_ONCE(sk->sk_sndbuf, READ_ONCE(sock_net(sk)->ipv4.sysctl_tcp_wmem[1])); 458 458 WRITE_ONCE(sk->sk_rcvbuf, READ_ONCE(sock_net(sk)->ipv4.sysctl_tcp_rmem[1])); 459 459 460 + set_bit(SOCK_SUPPORT_ZC, &sk->sk_socket->flags); 460 461 sk_sockets_allocated_inc(sk); 461 462 } 462 463 EXPORT_SYMBOL(tcp_init_sock);
+1
net/ipv4/udp.c
··· 1624 1624 { 1625 1625 skb_queue_head_init(&udp_sk(sk)->reader_queue); 1626 1626 sk->sk_destruct = udp_destruct_sock; 1627 + set_bit(SOCK_SUPPORT_ZC, &sk->sk_socket->flags); 1627 1628 return 0; 1628 1629 } 1629 1630