|
@@ -631,6 +631,7 @@ DeviceState *qdev_device_add_from_qdict(const QDict *opts,
|
|
|
char *id;
|
|
|
DeviceState *dev = NULL;
|
|
|
BusState *bus = NULL;
|
|
|
+ QDict *properties;
|
|
|
|
|
|
driver = qdict_get_try_str(opts, "driver");
|
|
|
if (!driver) {
|
|
@@ -712,13 +713,14 @@ DeviceState *qdev_device_add_from_qdict(const QDict *opts,
|
|
|
}
|
|
|
|
|
|
/* set properties */
|
|
|
- dev->opts = qdict_clone_shallow(opts);
|
|
|
- qdict_del(dev->opts, "driver");
|
|
|
- qdict_del(dev->opts, "bus");
|
|
|
- qdict_del(dev->opts, "id");
|
|
|
+ properties = qdict_clone_shallow(opts);
|
|
|
+ qdict_del(properties, "driver");
|
|
|
+ qdict_del(properties, "bus");
|
|
|
+ qdict_del(properties, "id");
|
|
|
|
|
|
- object_set_properties_from_keyval(&dev->parent_obj, dev->opts, from_json,
|
|
|
+ object_set_properties_from_keyval(&dev->parent_obj, properties, from_json,
|
|
|
errp);
|
|
|
+ qobject_unref(properties);
|
|
|
if (*errp) {
|
|
|
goto err_del_dev;
|
|
|
}
|