* 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 |_______/
