46 lines
2.0 KiB
Diff
46 lines
2.0 KiB
Diff
|
|
From 24140cab0cc08a239c6df320c6da59b8ce638055 Mon Sep 17 00:00:00 2001
|
||
|
|
From: Akihiko Odaki <akihiko.odaki@daynix.com>
|
||
|
|
Date: Wed, 27 Mar 2024 11:05:09 +0900
|
||
|
|
Subject: [PATCH] virtio-net: Fix vhost virtqueue notifiers for RSS
|
||
|
|
|
||
|
|
virtio_net_guest_notifier_pending() and virtio_net_guest_notifier_mask()
|
||
|
|
checked VIRTIO_NET_F_MQ to know there are multiple queues, but
|
||
|
|
VIRTIO_NET_F_RSS also enables multiple queues. Refer to n->multiqueue,
|
||
|
|
which is set to true either of VIRTIO_NET_F_MQ or VIRTIO_NET_F_RSS is
|
||
|
|
enabled.
|
||
|
|
|
||
|
|
Fixes: 68b0a6395f36 ("virtio-net: align ctrl_vq index for non-mq guest for vhost_vdpa")
|
||
|
|
Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com>
|
||
|
|
Signed-off-by: Jason Wang <jasowang@redhat.com>
|
||
|
|
(cherry picked from commit 1c188fc8cbffc5f05cc616cab4e1372fb6e6f11f)
|
||
|
|
Signed-off-by: zhujun2 <zhujun2_yewu@cmss.chinamobile.com>
|
||
|
|
---
|
||
|
|
hw/net/virtio-net.c | 4 ++--
|
||
|
|
1 file changed, 2 insertions(+), 2 deletions(-)
|
||
|
|
|
||
|
|
diff --git a/hw/net/virtio-net.c b/hw/net/virtio-net.c
|
||
|
|
index f3fb9393b3..f72fe61dda 100644
|
||
|
|
--- a/hw/net/virtio-net.c
|
||
|
|
+++ b/hw/net/virtio-net.c
|
||
|
|
@@ -3239,7 +3239,7 @@ static bool virtio_net_guest_notifier_pending(VirtIODevice *vdev, int idx)
|
||
|
|
VirtIONet *n = VIRTIO_NET(vdev);
|
||
|
|
NetClientState *nc;
|
||
|
|
assert(n->vhost_started);
|
||
|
|
- if (!virtio_vdev_has_feature(vdev, VIRTIO_NET_F_MQ) && idx == 2) {
|
||
|
|
+ if (!n->multiqueue && idx == 2) {
|
||
|
|
/* Must guard against invalid features and bogus queue index
|
||
|
|
* from being set by malicious guest, or penetrated through
|
||
|
|
* buggy migration stream.
|
||
|
|
@@ -3271,7 +3271,7 @@ static void virtio_net_guest_notifier_mask(VirtIODevice *vdev, int idx,
|
||
|
|
VirtIONet *n = VIRTIO_NET(vdev);
|
||
|
|
NetClientState *nc;
|
||
|
|
assert(n->vhost_started);
|
||
|
|
- if (!virtio_vdev_has_feature(vdev, VIRTIO_NET_F_MQ) && idx == 2) {
|
||
|
|
+ if (!n->multiqueue && idx == 2) {
|
||
|
|
/* Must guard against invalid features and bogus queue index
|
||
|
|
* from being set by malicious guest, or penetrated through
|
||
|
|
* buggy migration stream.
|
||
|
|
--
|
||
|
|
2.41.0.windows.1
|
||
|
|
|