OSDN Git Service

net: fix multiple NICs causing net opts process to stop
authorMark McLoughlin <markmc@redhat.com>
Mon, 12 Oct 2009 08:52:00 +0000 (09:52 +0100)
committerAnthony Liguori <aliguori@us.ibm.com>
Thu, 15 Oct 2009 14:32:03 +0000 (09:32 -0500)
For NICs, net_init_client() returns the index into the NICInfo table.

qemu_opts_foreach() interprets non-zero as an error return an stops
iterating over the options.

So, if you have more than one '-net nic' on the command line, subsequent
'-net' options do not get processed.

Fix this by making net_client_init() only return non-zero if
net_init_client() returns an error.

Reported-by: Peter Lieven <pl@dlh.net>
Patchworks-ID: 35736
Signed-off-by: Mark McLoughlin <markmc@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
net.c

diff --git a/net.c b/net.c
index ef40199..4708080 100644 (file)
--- a/net.c
+++ b/net.c
@@ -3302,7 +3302,9 @@ static void net_check_clients(void)
 
 static int net_init_client(QemuOpts *opts, void *dummy)
 {
-    return net_client_init(NULL, opts, 0);
+    if (net_client_init(NULL, opts, 0) < 0)
+        return -1;
+    return 0;
 }
 
 static int net_init_netdev(QemuOpts *opts, void *dummy)