diff mbox series

[RFC,v6,16/22] vhost/vsock: SEQPACKET feature bit support

Message ID 20210307180344.3466469-1-arseny.krasnov@kaspersky.com
State Superseded
Headers show
Series virtio/vsock: introduce SOCK_SEQPACKET support | expand

Commit Message

Arseny Krasnov March 7, 2021, 6:03 p.m. UTC
This adds handling of SEQPACKET bit: if guest sets features with
this bit cleared, then SOCK_SEQPACKET support will be disabled.

Signed-off-by: Arseny Krasnov <arseny.krasnov@kaspersky.com>
---
 drivers/vhost/vsock.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

Comments

Stefano Garzarella March 15, 2021, 11:28 a.m. UTC | #1
On Sun, Mar 07, 2021 at 09:03:41PM +0300, Arseny Krasnov wrote:
>This adds handling of SEQPACKET bit: if guest sets features with

>this bit cleared, then SOCK_SEQPACKET support will be disabled.

>

>Signed-off-by: Arseny Krasnov <arseny.krasnov@kaspersky.com>

>---

> drivers/vhost/vsock.c | 6 +++++-

> 1 file changed, 5 insertions(+), 1 deletion(-)


I think is better to move this patch after we set the seqpackets ops,
so we are really able to handle SEQPACKET traffic.

>

>diff --git a/drivers/vhost/vsock.c b/drivers/vhost/vsock.c

>index 5e78fb719602..3b0a50e6de12 100644

>--- a/drivers/vhost/vsock.c

>+++ b/drivers/vhost/vsock.c

>@@ -31,7 +31,8 @@

>

> enum {

> 	VHOST_VSOCK_FEATURES = VHOST_FEATURES |

>-			       (1ULL << VIRTIO_F_ACCESS_PLATFORM)

>+			       (1ULL << VIRTIO_F_ACCESS_PLATFORM) |

>+			       (1ULL << VIRTIO_VSOCK_F_SEQPACKET)

> };

>

> enum {

>@@ -785,6 +786,9 @@ static int vhost_vsock_set_features(struct vhost_vsock *vsock, u64 features)

> 			goto err;

> 	}

>

>+	if (features & (1ULL << VIRTIO_VSOCK_F_SEQPACKET))

>+		vhost_transport.seqpacket_allow = true;

>+

> 	for (i = 0; i < ARRAY_SIZE(vsock->vqs); i++) {

> 		vq = &vsock->vqs[i];

> 		mutex_lock(&vq->mutex);

>-- 

>2.25.1

>
diff mbox series

Patch

diff --git a/drivers/vhost/vsock.c b/drivers/vhost/vsock.c
index 5e78fb719602..3b0a50e6de12 100644
--- a/drivers/vhost/vsock.c
+++ b/drivers/vhost/vsock.c
@@ -31,7 +31,8 @@ 
 
 enum {
 	VHOST_VSOCK_FEATURES = VHOST_FEATURES |
-			       (1ULL << VIRTIO_F_ACCESS_PLATFORM)
+			       (1ULL << VIRTIO_F_ACCESS_PLATFORM) |
+			       (1ULL << VIRTIO_VSOCK_F_SEQPACKET)
 };
 
 enum {
@@ -785,6 +786,9 @@  static int vhost_vsock_set_features(struct vhost_vsock *vsock, u64 features)
 			goto err;
 	}
 
+	if (features & (1ULL << VIRTIO_VSOCK_F_SEQPACKET))
+		vhost_transport.seqpacket_allow = true;
+
 	for (i = 0; i < ARRAY_SIZE(vsock->vqs); i++) {
 		vq = &vsock->vqs[i];
 		mutex_lock(&vq->mutex);