* Michael S. Tsirkin ([email protected]) wrote:
> When vhost_commit() rebuilds the memory region table after a flatview
> change, it revalidates cached host virtual addresses for active vring
> parts. If a mapping is stale, QEMU abort().
> 
> This is not a security problem - only the priviledged guest
> can control make it invalid - but not nice e.g. for driver debugging.
> 
> Let's call virtio_error() instead, marking the device as broken.
> 
> Fixes: 0ca1fd2d68 ("vhost: Simplify ring verification checks")
> Resolves: https://gitlab.com/qemu-project/qemu/-/work_items/3783
> Cc: Stefano Garzarella <[email protected]>
> Cc: Dr. David Alan Gilbert <[email protected]>
> Signed-off-by: Michael S. Tsirkin <[email protected]>

Reviewed-by: Dr. David Alan Gilbert <[email protected]>

> ---
>  hw/virtio/vhost.c | 5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)
> 
> diff --git a/hw/virtio/vhost.c b/hw/virtio/vhost.c
> index af41841b52..371dca17dd 100644
> --- a/hw/virtio/vhost.c
> +++ b/hw/virtio/vhost.c
> @@ -755,8 +755,9 @@ static void vhost_commit(MemoryListener *listener)
>                         (void 
> *)(uintptr_t)dev->mem->regions[i].userspace_addr,
>                         dev->mem->regions[i].guest_phys_addr,
>                         dev->mem->regions[i].memory_size)) {
> -            error_report("Verify ring failure on region %d", i);
> -            abort();
> +            virtio_error(dev->vdev,
> +                         "Verify ring failure on region %d", i);
> +            goto out;
>          }
>      }
>  
> -- 
> MST
> 
-- 
 -----Open up your eyes, open up your mind, open up your code -------   
/ Dr. David Alan Gilbert    |       Running GNU/Linux       | Happy  \ 
\        dave @ treblig.org |                               | In Hex /
 \ _________________________|_____ http://www.treblig.org   |_______/

Reply via email to