Blame SOURCES/kvm-target-arm-monitor-query-cpu-model-expansion-crashed.patch

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