mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-07 09:43:56 -06:00
virtio-serial: Cleanup on device hot-unplug
Free malloc'ed memory, unregister from savevm and clean up virtio-common bits on device hot-unplug. This was found performing a migration after device hot-unplug. Reported-by: <lihuang@redhat.com> Signed-off-by: Amit Shah <amit.shah@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
This commit is contained in:
parent
583cd3cb93
commit
8b53a86577
3 changed files with 27 additions and 1 deletions
|
@ -41,6 +41,8 @@ struct VirtIOSerial {
|
|||
|
||||
VirtIOSerialBus *bus;
|
||||
|
||||
DeviceState *qdev;
|
||||
|
||||
QTAILQ_HEAD(, VirtIOSerialPort) ports;
|
||||
|
||||
/* bitmap for identifying active ports */
|
||||
|
@ -792,6 +794,8 @@ VirtIODevice *virtio_serial_init(DeviceState *dev, uint32_t max_nr_ports)
|
|||
vser->vdev.get_config = get_config;
|
||||
vser->vdev.set_config = set_config;
|
||||
|
||||
vser->qdev = dev;
|
||||
|
||||
/*
|
||||
* Register for the savevm section with the virtio-console name
|
||||
* to preserve backward compat
|
||||
|
@ -801,3 +805,16 @@ VirtIODevice *virtio_serial_init(DeviceState *dev, uint32_t max_nr_ports)
|
|||
|
||||
return vdev;
|
||||
}
|
||||
|
||||
void virtio_serial_exit(VirtIODevice *vdev)
|
||||
{
|
||||
VirtIOSerial *vser = DO_UPCAST(VirtIOSerial, vdev, vdev);
|
||||
|
||||
unregister_savevm(vser->qdev, "virtio-console", vser);
|
||||
|
||||
qemu_free(vser->ivqs);
|
||||
qemu_free(vser->ovqs);
|
||||
qemu_free(vser->ports_map);
|
||||
|
||||
virtio_cleanup(vdev);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue