[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-stable] [PATCH v3 00/12] virtio: cleanup and fix hot-unplug
From: |
Paolo Bonzini |
Subject: |
[Qemu-stable] [PATCH v3 00/12] virtio: cleanup and fix hot-unplug |
Date: |
Tue, 15 Oct 2013 18:46:38 +0200 |
This series fixes hot-unplug of virtio devices, which can crash due to
dangling pointer accesses.
The current implementation supports guest-initiated hot-unplug via the
virtio_bus_destroy_device function, but not hot-unplugging the virtio
device by virtue of unplugging its parent container device.
The problem is that the callback for the bus implementation to cleanup
is placed in the wrong place; it is in virtio_bus_destroy_device, which
should be called by the bus, instead of being somewhere in device code.
We need to have the callback in device code (for example in dc->exit),
so that we invoke it on every unplug action, no matter who starts it.
Thus, the series cleans up plugging and unplugging of virtio devices
so that it does not need any help from the bus (patches 2-5). It then
stops the virtio devices' overriding of dc->exit, moving their cleanup
code to the new exit callback in VirtioDeviceClass (patches 6-11).
Finally, patch 12 can make virtio-pci implement the device_unplugged
callback.
A similar dangling-pointer bug is exposed by this change in virtio-ccw.
Patch 1 avoids this; it is kept at the beginning to ensure bisectability.
v2->v3: fix to s390 patch; added Reviewed-by and Cced patch 1 to
qemu-stable.
v1->v2: remove useless pointer chasing in virtio_pci_notify, add
patch 1 to fix breakage reported by Cornelia.
Paolo Bonzini (12):
virtio-ccw: move virtio_ccw_stop_ioeventfd to virtio_ccw_busdev_unplug
virtio-bus: remove vdev field
virtio-ccw: remove vdev field
virtio-pci: remove vdev field
virtio-bus: cleanup plug/unplug interface
virtio-blk: switch exit callback to VirtioDeviceClass
virtio-serial: switch exit callback to VirtioDeviceClass
virtio-net: switch exit callback to VirtioDeviceClass
virtio-scsi: switch exit callback to VirtioDeviceClass
virtio-balloon: switch exit callback to VirtioDeviceClass
virtio-rng: switch exit callback to VirtioDeviceClass
virtio-pci: add device_unplugged callback
hw/block/virtio-blk.c | 10 ++--
hw/char/virtio-serial-bus.c | 10 ++--
hw/net/virtio-net.c | 11 ++--
hw/s390x/virtio-ccw.c | 83 +++++++++++++++------------
hw/s390x/virtio-ccw.h | 1 -
hw/scsi/vhost-scsi.c | 11 ++--
hw/scsi/virtio-scsi.c | 15 +++--
hw/virtio/virtio-balloon.c | 10 ++--
hw/virtio/virtio-bus.c | 81 ++++++++++++++------------
hw/virtio/virtio-mmio.c | 9 +--
hw/virtio/virtio-pci.c | 122 ++++++++++++++++++++++++----------------
hw/virtio/virtio-pci.h | 1 -
hw/virtio/virtio-rng.c | 10 ++--
hw/virtio/virtio.c | 7 ++-
include/hw/virtio/virtio-bus.h | 22 +++++---
include/hw/virtio/virtio-scsi.h | 2 +-
include/hw/virtio/virtio.h | 1 +
17 files changed, 227 insertions(+), 179 deletions(-)
--
1.8.3.1
- [Qemu-stable] [PATCH v3 00/12] virtio: cleanup and fix hot-unplug,
Paolo Bonzini <=
- [Qemu-stable] [PATCH v3 02/12] virtio-bus: remove vdev field, Paolo Bonzini, 2013/10/15
- [Qemu-stable] [PATCH v3 01/12] virtio-ccw: move virtio_ccw_stop_ioeventfd to virtio_ccw_busdev_unplug, Paolo Bonzini, 2013/10/15
- [Qemu-stable] [PATCH v3 03/12] virtio-ccw: remove vdev field, Paolo Bonzini, 2013/10/15
- [Qemu-stable] [PATCH v3 04/12] virtio-pci: remove vdev field, Paolo Bonzini, 2013/10/15
- [Qemu-stable] [PATCH v3 05/12] virtio-bus: cleanup plug/unplug interface, Paolo Bonzini, 2013/10/15
- [Qemu-stable] [PATCH v3 06/12] virtio-blk: switch exit callback to VirtioDeviceClass, Paolo Bonzini, 2013/10/15
- [Qemu-stable] [PATCH v3 07/12] virtio-serial: switch exit callback to VirtioDeviceClass, Paolo Bonzini, 2013/10/15
- [Qemu-stable] [PATCH v3 08/12] virtio-net: switch exit callback to VirtioDeviceClass, Paolo Bonzini, 2013/10/15
- [Qemu-stable] [PATCH v3 09/12] virtio-scsi: switch exit callback to VirtioDeviceClass, Paolo Bonzini, 2013/10/15
- [Qemu-stable] [PATCH v3 10/12] virtio-balloon: switch exit callback to VirtioDeviceClass, Paolo Bonzini, 2013/10/15