virtio_net: zero is an invald queue_pairs number
authorAmos Kong <akong@redhat.com>
Fri, 18 Apr 2014 05:45:41 +0000 (13:45 +0800)
committerDavid S. Miller <davem@davemloft.net>
Tue, 22 Apr 2014 20:01:35 +0000 (16:01 -0400)
Execute "ethtool -L eth0 combined 0" in guest, if multiqueue
is enabled, virtnet_send_command() will return -EINVAL error,
there is a validation in QEMU.

But if multiqueue is disabled, virtnet_set_queues() will just
return zero (success). We should return error for this situation.

Signed-off-by: Amos Kong <akong@redhat.com>
Acked-by: Jason Wang <jasowang@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/virtio_net.c

index 7b687469199b58357a74490cb266e4d47534c097..8a852b5f215f1c5b3b42c3bc93cf6655a1178b68 100644 (file)
@@ -1285,7 +1285,7 @@ static int virtnet_set_channels(struct net_device *dev,
        if (channels->rx_count || channels->tx_count || channels->other_count)
                return -EINVAL;
 
-       if (queue_pairs > vi->max_queue_pairs)
+       if (queue_pairs > vi->max_queue_pairs || queue_pairs == 0)
                return -EINVAL;
 
        get_online_cpus();