Ping
On Mon, Mar 15, 2021 at 1:59 PM Yuri Benditovich <yuri.benditov...@daynix.com> wrote: > > https://bugzilla.redhat.com/show_bug.cgi?id=1743098 > This commit completes the solution of segfault in hot unplug flow > (by commit ccec7e9603f446fe75c6c563ba335c00cfda6a06). > Added missing check for vdev in virtio_pci_isr_read. > Typical stack of crash: > virtio_pci_isr_read ../hw/virtio/virtio-pci.c:1365 with proxy-vdev = 0 > memory_region_read_accessor at ../softmmu/memory.c:442 > access_with_adjusted_size at ../softmmu/memory.c:552 > memory_region_dispatch_read1 at ../softmmu/memory.c:1420 > memory_region_dispatch_read at ../softmmu/memory.c:1449 > flatview_read_continue at ../softmmu/physmem.c:2822 > flatview_read at ../softmmu/physmem.c:2862 > address_space_read_full at ../softmmu/physmem.c:2875 > > Signed-off-by: Yuri Benditovich <yuri.benditov...@daynix.com> > --- > hw/virtio/virtio-pci.c | 9 +++++++-- > 1 file changed, 7 insertions(+), 2 deletions(-) > > diff --git a/hw/virtio/virtio-pci.c b/hw/virtio/virtio-pci.c > index 883045a223..4a3dcee771 100644 > --- a/hw/virtio/virtio-pci.c > +++ b/hw/virtio/virtio-pci.c > @@ -1364,9 +1364,14 @@ static uint64_t virtio_pci_isr_read(void *opaque, > hwaddr addr, > { > VirtIOPCIProxy *proxy = opaque; > VirtIODevice *vdev = virtio_bus_get_device(&proxy->bus); > - uint64_t val = qatomic_xchg(&vdev->isr, 0); > - pci_irq_deassert(&proxy->pci_dev); > + uint64_t val; > + > + if (vdev == NULL) { > + return 0; > + } > > + val = qatomic_xchg(&vdev->isr, 0); > + pci_irq_deassert(&proxy->pci_dev); > return val; > } > > -- > 2.17.1 >