yeahuh / rpms / qemu-kvm

Forked from rpms/qemu-kvm 2 years ago
Clone
902636
From c82cf5c08617c947b34eb490d1714729103e3379 Mon Sep 17 00:00:00 2001
902636
From: Andrew Jones <drjones@redhat.com>
902636
Date: Mon, 10 Feb 2020 17:33:57 +0000
902636
Subject: [PATCH 17/18] target/arm/monitor: query-cpu-model-expansion crashed
902636
 qemu when using machine type none
902636
MIME-Version: 1.0
902636
Content-Type: text/plain; charset=UTF-8
902636
Content-Transfer-Encoding: 8bit
902636
902636
RH-Author: Andrew Jones <drjones@redhat.com>
902636
Message-id: <20200210173358.16896-2-drjones@redhat.com>
902636
Patchwork-id: 93773
902636
O-Subject: [RHEL-AV-8.2.0 qemu-kvm PATCH 1/2] target/arm/monitor: query-cpu-model-expansion crashed qemu when using machine type none
902636
Bugzilla: 1801320
902636
RH-Acked-by: Auger Eric <eric.auger@redhat.com>
902636
RH-Acked-by: Gavin Shan <gshan@redhat.com>
902636
RH-Acked-by: Philippe Mathieu-Daudé <philmd@redhat.com>
902636
902636
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1801320
902636
902636
Author: Liang Yan <lyan@suse.com>
902636
Date:   Fri, 07 Feb 2020 14:04:21 +0000
902636
902636
    target/arm/monitor: query-cpu-model-expansion crashed qemu when using machine type none
902636
902636
    Commit e19afd566781 mentioned that target-arm only supports queryable
902636
    cpu models 'max', 'host', and the current type when KVM is in use.
902636
    The logic works well until using machine type none.
902636
902636
    For machine type none, cpu_type will be null if cpu option is not
902636
    set by command line, strlen(cpu_type) will terminate process.
902636
    So We add a check above it.
902636
902636
    This won't affect i386 and s390x since they do not use current_cpu.
902636
902636
    Signed-off-by: Liang Yan <lyan@suse.com>
902636
    Message-id: 20200203134251.12986-1-lyan@suse.com
902636
    Reviewed-by: Andrew Jones <drjones@redhat.com>
902636
    Tested-by: Andrew Jones <drjones@redhat.com>
902636
    Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
902636
902636
(cherry picked from commit 0999a4ba8718aa96105b978d3567fc7e90244c7e)
902636
Signed-off-by: Danilo C. L. de Paula <ddepaula@redhat.com>
902636
---
902636
 target/arm/monitor.c | 15 +++++++++------
902636
 1 file changed, 9 insertions(+), 6 deletions(-)
902636
902636
diff --git a/target/arm/monitor.c b/target/arm/monitor.c
902636
index 9725dff..c2dc790 100644
902636
--- a/target/arm/monitor.c
902636
+++ b/target/arm/monitor.c
902636
@@ -137,17 +137,20 @@ CpuModelExpansionInfo *qmp_query_cpu_model_expansion(CpuModelExpansionType type,
902636
     }
902636
 
902636
     if (kvm_enabled()) {
902636
-        const char *cpu_type = current_machine->cpu_type;
902636
-        int len = strlen(cpu_type) - strlen(ARM_CPU_TYPE_SUFFIX);
902636
         bool supported = false;
902636
 
902636
         if (!strcmp(model->name, "host") || !strcmp(model->name, "max")) {
902636
             /* These are kvmarm's recommended cpu types */
902636
             supported = true;
902636
-        } else if (strlen(model->name) == len &&
902636
-                   !strncmp(model->name, cpu_type, len)) {
902636
-            /* KVM is enabled and we're using this type, so it works. */
902636
-            supported = true;
902636
+        } else if (current_machine->cpu_type) {
902636
+            const char *cpu_type = current_machine->cpu_type;
902636
+            int len = strlen(cpu_type) - strlen(ARM_CPU_TYPE_SUFFIX);
902636
+
902636
+            if (strlen(model->name) == len &&
902636
+                !strncmp(model->name, cpu_type, len)) {
902636
+                /* KVM is enabled and we're using this type, so it works. */
902636
+                supported = true;
902636
+            }
902636
         }
902636
         if (!supported) {
902636
             error_setg(errp, "We cannot guarantee the CPU type '%s' works "
902636
-- 
902636
1.8.3.1
902636