Improve sparc_cpu_class_by_name() by validating @oc, to ensure it's child of TYPE_SPARC_CPU since it's possible for other types of classes to have TYPE_SPARC_CPU as the suffix of their type names.
Signed-off-by: Gavin Shan <gs...@redhat.com> --- target/sparc/cpu.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/target/sparc/cpu.c b/target/sparc/cpu.c index 130ab8f578..20417707da 100644 --- a/target/sparc/cpu.c +++ b/target/sparc/cpu.c @@ -745,7 +745,12 @@ static ObjectClass *sparc_cpu_class_by_name(const char *cpu_model) typename = sparc_cpu_type_name(cpu_model); oc = object_class_by_name(typename); g_free(typename); - return oc; + if (object_class_dynamic_cast(oc, TYPE_SPARC_CPU) && + !object_class_is_abstract(oc)) { + return oc; + } + + return NULL; } static void sparc_cpu_realizefn(DeviceState *dev, Error **errp) -- 2.41.0