]> git.proxmox.com Git - qemu.git/commitdiff
tap: forbid creating multiqueue tap when hub is used
authorJason Wang <jasowang@redhat.com>
Thu, 21 Feb 2013 03:05:56 +0000 (11:05 +0800)
committerStefan Hajnoczi <stefanha@redhat.com>
Wed, 27 Feb 2013 15:10:47 +0000 (16:10 +0100)
Obviously, hub does not support multiqueue tap. So this patch forbids creating
multiple queue tap when hub is used to prevent the crash when command line such
as "-net tap,queues=2" is used.

Cc: qemu-stable@nongnu.org
Signed-off-by: Jason Wang <jasowang@redhat.com>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
net/tap.c

index 48c254ed856965fd078301fdb8631648b15de1f9..daab350efcd3b5966039a50da940e6e7985ab6b5 100644 (file)
--- a/net/tap.c
+++ b/net/tap.c
@@ -693,6 +693,13 @@ int net_init_tap(const NetClientOptions *opts, const char *name,
     queues = tap->has_queues ? tap->queues : 1;
     vhostfdname = tap->has_vhostfd ? tap->vhostfd : NULL;
 
+    /* QEMU vlans does not support multiqueue tap, in this case peer is set.
+     * For -netdev, peer is always NULL. */
+    if (peer && (tap->has_queues || tap->has_fds || tap->has_vhostfds)) {
+        error_report("Multiqueue tap cannnot be used with QEMU vlans");
+        return -1;
+    }
+
     if (tap->has_fd) {
         if (tap->has_ifname || tap->has_script || tap->has_downscript ||
             tap->has_vnet_hdr || tap->has_helper || tap->has_queues ||