[PULL 06/14] target/i386: fix NULL pointer dereference in legacy-cache=off handling
Michael Tokarev <[email protected]>
| Newsgroups | org.nongnu.qemu-trivial,org.nongnu.qemu-devel |
|---|---|
| Message-ID | <[email protected]> |
From: Sergei Heifetz <[email protected]> The check that xcc->model is not NULL occurs after it is dereferenced inside x86_cpu_get_versioned_cache_info(), so something like `-cpu host,legacy-cache=off` leads to a segfault rather than an error. This patch fixes that. Fixes: cca0a000d06f897411a8a ("target/i386: allow versioned CPUs to specify new cache_info") Signed-off-by: Sergei Heifetz <[email protected]> Reviewed-by: Vladimir Sementsov-Ogievskiy <[email protected]> Reviewed-by: Zhao Liu <[email protected]> Reviewed-by: Michael Tokarev <[email protected]> [Mjt: simplify the following condition too] Signed-off-by: Michael Tokarev <[email protected]> --- target/i386/cpu.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/target/i386/cpu.c b/target/i386/cpu.c index 5b9ae79f16..b5e483e8cd 100644 --- a/target/i386/cpu.c +++ b/target/i386/cpu.c @@ -10107,10 +10107,11 @@ static void x86_cpu_realizefn(DeviceState *dev, Error **errp) /* Cache information initialization */ if (!cpu->legacy_cache) { - const CPUCaches *cache_info = - x86_cpu_get_versioned_cache_info(cpu, xcc->model); + const CPUCaches *cache_info = xcc->model + ? x86_cpu_get_versioned_cache_info(cpu, xcc->model) + : NULL; - if (!xcc->model || !cache_info) { + if (!cache_info) { g_autofree char *name = x86_cpu_class_get_model_name(xcc); error_setg(errp, "CPU model '%s' doesn't support legacy-cache=off", name); -- 2.47.3