]> git.ipfire.org Git - thirdparty/qemu.git/commit - system/vl.c
softmmu: fix device deletion events with -device JSON syntax
authorDaniel P. Berrangé <berrange@redhat.com>
Wed, 5 Jan 2022 12:38:47 +0000 (12:38 +0000)
committerKevin Wolf <kwolf@redhat.com>
Fri, 14 Jan 2022 11:03:16 +0000 (12:03 +0100)
commit64b4529a432507ee84a924be69a03432639e87ba
treea90711d418068a65a06f81cb356817c64cecd5a9
parenteac32e2232f949c0a1638acbef8f6ba0e4feeb67
softmmu: fix device deletion events with -device JSON syntax

The -device JSON syntax impl leaks a reference on the created
DeviceState instance. As a result when you hot-unplug the
device, the device_finalize method won't be called and thus
it will fail to emit the required DEVICE_DELETED event.

A 'json-cli' feature was previously added against the
'device_add' QMP command QAPI schema to indicated to mgmt
apps that -device supported JSON syntax. Given the hotplug
bug that feature flag is not usable for its purpose, so
we add a new 'json-cli-hotplug' feature to indicate the
-device supports JSON without breaking hotplug.

Fixes: 5dacda5167560b3af8eadbce5814f60ba44b467e
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/802
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Message-Id: <20220105123847.4047954-2-berrange@redhat.com>
Reviewed-by: Laurent Vivier <lvivier@redhat.com>
Tested-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Thomas Huth <thuth@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
qapi/qdev.json
softmmu/vl.c
tests/qtest/device-plug-test.c