On Thu, 2019-07-25 at 12:25 -0400, John Snow wrote: > > On 7/24/19 11:23 PM, Oleinik, Alexander wrote: > > Signed-off-by: Alexander Oleinik <alx...@bu.edu> > > Is there some explanation for why the below patch does what the > subject > line claims for the uninitiated? When multiqueue mode (VIRTIO_NET_F_MQ) is disabled, virtio-net sets up three queues. 0:receiveq, 1:transmitq and 2:controlq. > I don't know why increasing the number of queues from 2 to 3 here is > correct in the general case, OR why it would "add ctrl vq support". > (Or what it has to do with fuzzing, in general.)
Prior to the change, accessing the ctrl vq through QOS, would trigger a segfault, since only two queues were allocated to QVirtioDevice* interface->queues. Also, when VIRTIO_NET_F_MQ is enabled, the number of queues is 2*N + 1, so I think in that case n->n_queues is also short by one in the code below. > [Only responding because this landed in tests/libqos, which I do try > to > keep an eye on, but this patch is opaque to me. --js] > > > --- > > tests/libqos/virtio-net.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/tests/libqos/virtio-net.c b/tests/libqos/virtio-net.c > > index 66405b646e..247a0a17a8 100644 > > --- a/tests/libqos/virtio-net.c > > +++ b/tests/libqos/virtio-net.c > > @@ -51,7 +51,7 @@ static void virtio_net_setup(QVirtioNet > > *interface) > > if (features & (1u << VIRTIO_NET_F_MQ)) { > > interface->n_queues = qvirtio_config_readw(vdev, 8) * 2; > > } else { > > - interface->n_queues = 2; > > + interface->n_queues = 3; > > } > > > > interface->queues = g_new(QVirtQueue *, interface->n_queues); > >