hw/virtio: gracefully handle unset vhost_dev vdev

I've noticed asserts firing because we query the status of vdev after
a vhost connection is closed down. Rather than faulting on the NULL
indirect just quietly reply false.

Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Message-Id: <20220728135503.1060062-3-alex.bennee@linaro.org>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
Alex Bennée 2022-07-28 14:55:01 +01:00 committed by Michael S. Tsirkin
parent 9a4b6a63ae
commit f20400ed0d
1 changed files with 7 additions and 3 deletions

View File

@ -306,7 +306,7 @@ static inline void vhost_dev_log_resize(struct vhost_dev *dev, uint64_t size)
dev->log_size = size; dev->log_size = size;
} }
static int vhost_dev_has_iommu(struct vhost_dev *dev) static bool vhost_dev_has_iommu(struct vhost_dev *dev)
{ {
VirtIODevice *vdev = dev->vdev; VirtIODevice *vdev = dev->vdev;
@ -316,8 +316,12 @@ static int vhost_dev_has_iommu(struct vhost_dev *dev)
* does not have IOMMU, there's no need to enable this feature * does not have IOMMU, there's no need to enable this feature
* which may cause unnecessary IOTLB miss/update transactions. * which may cause unnecessary IOTLB miss/update transactions.
*/ */
return virtio_bus_device_iommu_enabled(vdev) && if (vdev) {
virtio_host_has_feature(vdev, VIRTIO_F_IOMMU_PLATFORM); return virtio_bus_device_iommu_enabled(vdev) &&
virtio_host_has_feature(vdev, VIRTIO_F_IOMMU_PLATFORM);
} else {
return false;
}
} }
static void *vhost_memory_map(struct vhost_dev *dev, hwaddr addr, static void *vhost_memory_map(struct vhost_dev *dev, hwaddr addr,