From 31bed5509dfcbdfc293154ce81086a4dbd7a80b6 Mon Sep 17 00:00:00 2001 From: Eduardo Habkost Date: Sat, 1 Nov 2014 13:56:11 -0200 Subject: [PATCH] qdev: Use qdev_get_device_class() for -device ,help MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Make sure we try to list properties from classes that can be safely used with "-device". Fixes the following crashes: $ qemu-system-x86_64 -device x86_64-cpu,help ** ERROR:qom/object.c:336:object_initialize_with_type: assertion failed: (type->abstract == false) Aborted (core dumped) $ qemu-system-x86_64 -device host-x86_64-cpu,help qemu-system-x86_64: [...]/target-i386/cpu.c:1329: host_x86_cpu_initfn: Assertion `(kvm_allowed)' failed. Aborted (core dumped) After applying this patch: $ qemu-system-x86_64 -device x86_64-cpu,help Parameter 'driver' expects non-abstract device type $ qemu-system-x86_64 -device host-x86_64-cpu,help Parameter 'driver' expects pluggable device type Signed-off-by: Eduardo Habkost Signed-off-by: Andreas Färber --- qdev-monitor.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/qdev-monitor.c b/qdev-monitor.c index a9702d89c2..ebfa701a9d 100644 --- a/qdev-monitor.c +++ b/qdev-monitor.c @@ -235,12 +235,9 @@ int qdev_device_help(QemuOpts *opts) return 0; } - if (!object_class_by_name(driver)) { - const char *typename = find_typename_by_alias(driver); - - if (typename) { - driver = typename; - } + qdev_get_device_class(&driver, &local_err); + if (local_err) { + goto error; } prop_list = qmp_device_list_properties(driver, &local_err); -- 2.11.4.GIT