vhost: ensure vhost_ops are set before calling iotlb callback
This patch fixes a crash that happens when vhost-user iommu support is enabled and vhost-user socket is closed. When it happens, if an IOTLB invalidation notification is sent by the IOMMU, vhost_ops's NULL pointer is dereferenced. Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com> Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
parent
552a1e01a4
commit
384b557da1
@ -309,7 +309,10 @@ int vhost_backend_update_device_iotlb(struct vhost_dev *dev,
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
return dev->vhost_ops->vhost_send_device_iotlb_msg(dev, &imsg);
|
||||
if (dev->vhost_ops && dev->vhost_ops->vhost_send_device_iotlb_msg)
|
||||
return dev->vhost_ops->vhost_send_device_iotlb_msg(dev, &imsg);
|
||||
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
int vhost_backend_invalidate_device_iotlb(struct vhost_dev *dev,
|
||||
@ -321,7 +324,10 @@ int vhost_backend_invalidate_device_iotlb(struct vhost_dev *dev,
|
||||
imsg.size = len;
|
||||
imsg.type = VHOST_IOTLB_INVALIDATE;
|
||||
|
||||
return dev->vhost_ops->vhost_send_device_iotlb_msg(dev, &imsg);
|
||||
if (dev->vhost_ops && dev->vhost_ops->vhost_send_device_iotlb_msg)
|
||||
return dev->vhost_ops->vhost_send_device_iotlb_msg(dev, &imsg);
|
||||
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
int vhost_backend_handle_iotlb_msg(struct vhost_dev *dev,
|
||||
|
Loading…
Reference in New Issue
Block a user