From: "Andreas Färber" <afaerber@suse.de>
To: Paolo Bonzini <pbonzini@redhat.com>, qemu-devel@nongnu.org
Cc: mst@redhat.com
Subject: Re: [Qemu-devel] [PATCH v4 00/30] virtio: cleanup, fix hot-unplug, move to realize
Date: Sat, 07 Dec 2013 02:46:17 +0100 [thread overview]
Message-ID: <52A27DE9.20909@suse.de> (raw)
In-Reply-To: <1385720262-14107-1-git-send-email-pbonzini@redhat.com>
Am 29.11.2013 11:17, schrieb Paolo Bonzini:
> 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.
>
> Patches 13-30 are Andreas's conversion of virtio to realize/unrealize,
> which has better error propagation as shown by the small testcase fix.
>
> v3->v4: rebased, added Andreas's realize patches on top
>
> 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.
>
> Andreas Färber (18):
> virtio-blk-dataplane: Improve error reporting
> virtio-9p: QOM realize preparations
> virtio-blk: QOM realize preparations
> virtio-serial: QOM realize preparations
> virtio-net: QOM realize preparations
> virtio-balloon: QOM realize preparations
> virtio-rng: QOM realize preparations
> virtio-scsi: QOM realize preparations
> virtio: Start converting VirtioDevice to QOM realize
> virtio-9p: Convert to QOM realize
> virtio-blk: Convert to QOM realize
> virtio-serial: Convert to QOM realize
> virtio-net: Convert to QOM realize
> virtio-balloon: Convert to QOM realize
> virtio-rng: Convert to QOM realize
> virtio-scsi: Convert to QOM realize
> virtio: Complete converting VirtioDevice to QOM realize
> virtio: Convert exit to unrealize
>
> 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
These 6 patches still fail to acknowledge that by fixing the overridden
exit callback they also fix the issue that I was fixing differently in:
http://patchwork.ozlabs.org/patch/249786/ (v1)
http://patchwork.ozlabs.org/patch/263881/ (v2)
Request to add a sentence to the commit message such as:
"This also fixes a memory leak for bus_name, spotted by Andreas."
(Reported-by would be wrong since I didn't spot the 2nd hotunplug issue)
I will be offline for a couple of days and couldn't complete going
through all patches, so if the end result is working QOM-realize'ified
devices then I'm fine with these going through you, mst or whomever. :)
Thanks,
Andreas
> virtio-pci: add device_unplugged callback
--
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg
next prev parent reply other threads:[~2013-12-07 1:46 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-11-29 10:17 [Qemu-devel] [PATCH v4 00/30] virtio: cleanup, fix hot-unplug, move to realize Paolo Bonzini
2013-11-29 10:17 ` [Qemu-devel] [PATCH 01/30] virtio-ccw: move virtio_ccw_stop_ioeventfd to virtio_ccw_busdev_unplug Paolo Bonzini
2013-11-29 10:17 ` [Qemu-devel] [PATCH 02/30] virtio-bus: remove vdev field Paolo Bonzini
2013-11-29 10:17 ` [Qemu-devel] [PATCH 03/30] virtio-ccw: " Paolo Bonzini
2013-11-29 10:17 ` [Qemu-devel] [PATCH 04/30] virtio-pci: " Paolo Bonzini
2013-11-29 10:17 ` [Qemu-devel] [PATCH 05/30] virtio-bus: cleanup plug/unplug interface Paolo Bonzini
2013-11-29 10:17 ` [Qemu-devel] [PATCH 06/30] virtio-blk: switch exit callback to VirtioDeviceClass Paolo Bonzini
2013-11-29 10:17 ` [Qemu-devel] [PATCH 07/30] virtio-serial: " Paolo Bonzini
2013-11-29 10:17 ` [Qemu-devel] [PATCH 08/30] virtio-net: " Paolo Bonzini
2013-11-29 10:17 ` [Qemu-devel] [PATCH 09/30] virtio-scsi: " Paolo Bonzini
2013-11-29 10:17 ` [Qemu-devel] [PATCH 10/30] virtio-balloon: " Paolo Bonzini
2013-11-29 10:17 ` [Qemu-devel] [PATCH 11/30] virtio-rng: " Paolo Bonzini
2013-11-29 10:17 ` [Qemu-devel] [PATCH 12/30] virtio-pci: add device_unplugged callback Paolo Bonzini
2013-11-29 10:17 ` [Qemu-devel] [PATCH 13/30] virtio-blk-dataplane: Improve error reporting Paolo Bonzini
2013-11-29 10:17 ` [Qemu-devel] [PATCH 14/30] virtio-9p: QOM realize preparations Paolo Bonzini
2013-11-29 10:17 ` [Qemu-devel] [PATCH 15/30] virtio-blk: " Paolo Bonzini
2013-11-29 10:17 ` [Qemu-devel] [PATCH 16/30] virtio-serial: " Paolo Bonzini
2013-11-29 10:17 ` [Qemu-devel] [PATCH 17/30] virtio-net: " Paolo Bonzini
2013-11-29 10:17 ` [Qemu-devel] [PATCH 18/30] virtio-balloon: " Paolo Bonzini
2013-11-29 10:17 ` [Qemu-devel] [PATCH 19/30] virtio-rng: " Paolo Bonzini
2013-11-29 10:17 ` [Qemu-devel] [PATCH 20/30] virtio-scsi: " Paolo Bonzini
2013-11-29 10:17 ` [Qemu-devel] [PATCH 21/30] virtio: Start converting VirtioDevice to QOM realize Paolo Bonzini
2013-11-29 10:17 ` [Qemu-devel] [PATCH 22/30] virtio-9p: Convert " Paolo Bonzini
2013-11-29 10:17 ` [Qemu-devel] [PATCH 23/30] virtio-blk: " Paolo Bonzini
2013-11-29 16:08 ` Andreas Färber
2013-11-29 10:17 ` [Qemu-devel] [PATCH 24/30] virtio-serial: " Paolo Bonzini
2013-11-29 10:17 ` [Qemu-devel] [PATCH 25/30] virtio-net: " Paolo Bonzini
2013-11-29 10:17 ` [Qemu-devel] [PATCH 26/30] virtio-balloon: " Paolo Bonzini
2013-11-29 10:17 ` [Qemu-devel] [PATCH 27/30] virtio-rng: " Paolo Bonzini
2013-11-29 16:10 ` Andreas Färber
2013-11-29 16:12 ` Paolo Bonzini
2013-11-29 10:17 ` [Qemu-devel] [PATCH 28/30] virtio-scsi: " Paolo Bonzini
2013-11-29 10:17 ` [Qemu-devel] [PATCH 29/30] virtio: Complete converting VirtioDevice " Paolo Bonzini
2013-11-29 10:17 ` [Qemu-devel] [PATCH 30/30] virtio: Convert exit to unrealize Paolo Bonzini
2013-12-07 1:46 ` Andreas Färber [this message]
2013-12-09 17:57 ` [Qemu-devel] [PATCH v4 00/30] virtio: cleanup, fix hot-unplug, move to realize Paolo Bonzini
2013-12-09 18:52 ` Cornelia Huck
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=52A27DE9.20909@suse.de \
--to=afaerber@suse.de \
--cc=mst@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.