mirror of
https://gitlab.com/qemu-project/qemu
synced 2024-11-05 20:35:44 +00:00
qdev-monitor: Inline qdev_init() for device_add
For historic reasons, qdev_init() unparents the device on failure. Inline this to make the error paths clearer and consistent. Reviewed-by: Igor Mammedov <imammedo@redhat.com> Signed-off-by: Andreas Färber <afaerber@suse.de>
This commit is contained in:
parent
2bcb0c62f6
commit
852e2c5008
1 changed files with 6 additions and 1 deletions
|
@ -458,6 +458,7 @@ DeviceState *qdev_device_add(QemuOpts *opts)
|
|||
const char *driver, *path, *id;
|
||||
DeviceState *dev;
|
||||
BusState *bus = NULL;
|
||||
Error *err = NULL;
|
||||
|
||||
driver = qemu_opt_get(opts, "driver");
|
||||
if (!driver) {
|
||||
|
@ -540,7 +541,11 @@ DeviceState *qdev_device_add(QemuOpts *opts)
|
|||
OBJECT(dev), NULL);
|
||||
g_free(name);
|
||||
}
|
||||
if (qdev_init(dev) < 0) {
|
||||
object_property_set_bool(OBJECT(dev), true, "realized", &err);
|
||||
if (err != NULL) {
|
||||
qerror_report_err(err);
|
||||
error_free(err);
|
||||
object_unparent(OBJECT(dev));
|
||||
object_unref(OBJECT(dev));
|
||||
qerror_report(QERR_DEVICE_INIT_FAILED, driver);
|
||||
return NULL;
|
||||
|
|
Loading…
Reference in a new issue