s390x/cpumodel: fix segmentation fault when baselining models
commit677ff32db12bcd1bca3a3df733d2478896d6df96
authorDavid Hildenbrand <david@redhat.com>
Wed, 18 Jul 2018 09:23:30 +0000 (18 11:23 +0200)
committerCornelia Huck <cohuck@redhat.com>
Wed, 18 Jul 2018 12:20:02 +0000 (18 14:20 +0200)
tree9798405dd80bda6600a3fce59730f14cc57b0ba9
parentea6abffa8a08d832feb759d359d5b935e3087cf7
s390x/cpumodel: fix segmentation fault when baselining models

Usually, when baselining two CPU models, whereby one of them has base
CPU features disabled (e.g. z14-base,msa=off), we fallback to an older
model that did not have these features in the base model. We always try to
create a "sane" CPU model (as far as possible), and one part of it is that
removing base features is no good and to be avoided.

Now, if we disable base features that were part of a z900, we're out of
luck. We won't find a CPU model and QEMU will segfault. This is a
scenario that should never happen in real life, but it can be used to
crash QEMU.

So let's properly report an error if we baseline e.g.:

{ "execute": "query-cpu-model-baseline",
  "arguments" : { "modela": { "name": "z14-base", "props": {"esan3" : false}},
                  "modelb": { "name": "z14"}} }

Instead of segfaulting.

Signed-off-by: David Hildenbrand <david@redhat.com>
Message-Id: <20180718092330.19465-1-david@redhat.com>
Acked-by: Christian Borntraeger <borntraeger@de.ibm.com>
Signed-off-by: Cornelia Huck <cohuck@redhat.com>
target/s390x/cpu_models.c