A guest can trigger unplugging 9pfs server's virtio-pci device via ACPI
eject. As a consequence the device is unrealized, server's internal state
is freed while pending coroutines would still have access to them, causing
a potential heap-use-after-free.
Overview Patches:
- Patch 1: this is the core fix, that drains all PDUs (i.e. coroutines
that handle individual pending requests in parallel) before freeing
server state.
- Patch 2: fixes a similar identified issue with the Xen transport, even
though not triggered via ACPI, it is also prone to UAF, plus a resource
leak.
v2:
- Patch 1: Make Jia the official author of this patch.
- Drop prev. patch 2 ("hw/9pfs/virtio: disable hotpluggable property...")
- Patch 2: defer explict xen_9pfs_disconnect() call from error paths of
xen_9pfs_pdu_vmarshal() and xen_9pfs_pdu_vunmarshal().
Christian Schoenebeck (1):
hw/9pfs/xen: drain in-flight PDUs before xen-9p disconnect
Jia Jia (1):
hw/9pfs/virtio: drain in-flight PDUs before virtio-9p unrealize
hw/9pfs/virtio-9p-device.c | 1 +
hw/9pfs/xen-9p-backend.c | 19 +++++++++++++++++--
2 files changed, 18 insertions(+), 2 deletions(-)
--
2.47.3