Machine definitions may miss some vCPU-related parameters. E.g., xlnx-versal-virt missed min_cpus and it was set to 1 by default. This allowed using -smp 1 command line argument. But the machine still created 2 vCPUs and passed all checks. This patch adds one more check that does not allow creating extra cpus that exceed the values specified in machine/smp.
Signed-off-by: Pavel Dovgalyuk <pavel.dovgal...@ispras.ru> --- 0 files changed diff --git a/softmmu/cpus.c b/softmmu/cpus.c index 47cceddd80..da74794e09 100644 --- a/softmmu/cpus.c +++ b/softmmu/cpus.c @@ -603,6 +603,11 @@ void qemu_init_vcpu(CPUState *cpu) { MachineState *ms = MACHINE(qdev_get_machine()); + if (cpu->cpu_index >= ms->smp.cpus) { + fprintf(stderr, "Machine definition error: trying to create too many CPUs\n"); + exit(1); + } + cpu->nr_cores = ms->smp.cores; cpu->nr_threads = ms->smp.threads; cpu->stopped = true;