]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
vsock: enable SOCK_SUPPORT_ZC bit
authorArseniy Krasnov <avkrasnov@salutedevices.com>
Tue, 10 Oct 2023 19:15:16 +0000 (22:15 +0300)
committerDavid S. Miller <davem@davemloft.net>
Sun, 15 Oct 2023 12:19:42 +0000 (13:19 +0100)
This bit is used by io_uring in case of zerocopy tx mode. io_uring code
checks, that socket has this feature. This patch sets it in two places:
1) For socket in 'connect()' call.
2) For new socket which is returned by 'accept()' call.

Signed-off-by: Arseniy Krasnov <avkrasnov@salutedevices.com>
Reviewed-by: Stefano Garzarella <sgarzare@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/vmw_vsock/af_vsock.c

index 71108b1f0dfcc6b74ff7aab493c8555c5f4582c5..37b1c04329416e76945e1cf1f1a4474280f24a58 100644 (file)
@@ -1406,6 +1406,9 @@ static int vsock_connect(struct socket *sock, struct sockaddr *addr,
                        goto out;
                }
 
+               if (vsock_msgzerocopy_allow(transport))
+                       set_bit(SOCK_SUPPORT_ZC, &sk->sk_socket->flags);
+
                err = vsock_auto_bind(vsk);
                if (err)
                        goto out;
@@ -1560,6 +1563,9 @@ static int vsock_accept(struct socket *sock, struct socket *newsock, int flags,
                } else {
                        newsock->state = SS_CONNECTED;
                        sock_graft(connected, newsock);
+                       if (vsock_msgzerocopy_allow(vconnected->transport))
+                               set_bit(SOCK_SUPPORT_ZC,
+                                       &connected->sk_socket->flags);
                }
 
                release_sock(connected);