From 07672ab0031ace234a4031e439e7174cde1e1d72 Mon Sep 17 00:00:00 2001 From: Eric Blake Date: Thu, 23 Mar 2017 11:03:15 -0500 Subject: qom: Fix regression with 'qom-type' Commit 9a6d1ac assumed that 'qom-type' could be removed from QemuOpts with no ill effects. However, this command line proves otherwise: $ ./x86_64-softmmu/qemu-system-x86_64 -nodefaults -nographic -qmp stdio \ -object rng-random,filename=/dev/urandom,id=rng0 \ -device virtio-rng-pci,rng=rng0 qemu-system-x86_64: -object rng-random,filename=/dev/urandom,id=rng0: Parameter 'qom-type' is missing Fix the regression by restoring qom-type in opts after its temporary removal that was needed for the duration of user_creatable_add_opts(). Reported-by: Richard W. M. Jones Signed-off-by: Eric Blake Reviewed-by: Markus Armbruster Tested-by: Richard W.M. Jones Message-id: 20170323160315.19696-1-eblake@redhat.com Signed-off-by: Peter Maydell (cherry picked from commit 08329701199449bde497570dcfdb9c86062baf20) Signed-off-by: Michael Roth --- qom/object_interfaces.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/qom/object_interfaces.c b/qom/object_interfaces.c index 0283de8349..fd7061c4f3 100644 --- a/qom/object_interfaces.c +++ b/qom/object_interfaces.c @@ -117,6 +117,7 @@ Object *user_creatable_add_opts(QemuOpts *opts, Error **errp) } if (!id) { error_setg(errp, QERR_MISSING_PARAMETER, "id"); + qemu_opt_set(opts, "qom-type", type, &error_abort); g_free(type); return NULL; } @@ -129,6 +130,7 @@ Object *user_creatable_add_opts(QemuOpts *opts, Error **errp) visit_free(v); qemu_opts_set_id(opts, (char *) id); + qemu_opt_set(opts, "qom-type", type, &error_abort); g_free(type); QDECREF(pdict); return obj; -- cgit v1.2.1