mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-04 00:03:54 -06:00
qdev: Don't leak string property value on hot unplug
parse_string() qemu_strdup()s the property value. It is never freed. It needs to be freed along with the device. Otherwise, the value of scsi-disk property "ver" gets leaked when hot-unplugging the disk, for instance. Call new PropertyInfo method free() from qdev_free(). Implement it for qdev_prop_string. Signed-off-by: Markus Armbruster <armbru@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
parent
cc98467327
commit
d21357df9a
3 changed files with 13 additions and 0 deletions
|
@ -334,6 +334,7 @@ void qdev_init_nofail(DeviceState *dev)
|
|||
void qdev_free(DeviceState *dev)
|
||||
{
|
||||
BusState *bus;
|
||||
Property *prop;
|
||||
|
||||
if (dev->state == DEV_STATE_INITIALIZED) {
|
||||
while (dev->num_child_bus) {
|
||||
|
@ -349,6 +350,11 @@ void qdev_free(DeviceState *dev)
|
|||
}
|
||||
qemu_unregister_reset(qdev_reset, dev);
|
||||
QLIST_REMOVE(dev, sibling);
|
||||
for (prop = dev->info->props; prop && prop->name; prop++) {
|
||||
if (prop->info->free) {
|
||||
prop->info->free(dev, prop);
|
||||
}
|
||||
}
|
||||
qemu_free(dev);
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue