]> Git Repo - qemu.git/commitdiff
vl: Add another sanity check to smp_parse() function
authorThomas Huth <[email protected]>
Wed, 22 Jul 2015 13:59:50 +0000 (15:59 +0200)
committerEduardo Habkost <[email protected]>
Fri, 2 Oct 2015 19:22:01 +0000 (16:22 -0300)
The code in smp_parse already checks the topology information for
sockets * cores * threads < cpus and bails out with an error in
that case. However, it is still possible to supply a bad configuration
the other way round, e.g. with:

 qemu-system-xxx -smp 4,sockets=1,cores=4,threads=2

QEMU then still starts the guest, with topology configuration that
is rather incomprehensible and likely not what the user wanted.
So let's add another check to refuse such wrong configurations.

Signed-off-by: Thomas Huth <[email protected]>
Reviewed-by: Eduardo Habkost <[email protected]>
Acked-by: Cornelia Huck <[email protected]>
Acked-by: Bastian Koppelmann <[email protected]>
Signed-off-by: Eduardo Habkost <[email protected]>
vl.c

diff --git a/vl.c b/vl.c
index 8d1846c06c8482808297648cd1a83745e52c66d4..f2bd8d20fbfa00e0b32329953d518b4186712137 100644 (file)
--- a/vl.c
+++ b/vl.c
@@ -1223,7 +1223,13 @@ static void smp_parse(QemuOpts *opts)
             exit(1);
         }
 
-        max_cpus = qemu_opt_get_number(opts, "maxcpus", 0);
+        max_cpus = qemu_opt_get_number(opts, "maxcpus", cpus);
+        if (sockets * cores * threads > max_cpus) {
+            fprintf(stderr, "cpu topology: error: "
+                    "sockets (%u) * cores (%u) * threads (%u) > maxcpus (%u)\n",
+                    sockets, cores, threads, max_cpus);
+            exit(1);
+        }
 
         smp_cpus = cpus;
         smp_cores = cores > 0 ? cores : 1;
This page took 0.030485 seconds and 4 git commands to generate.