[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v4 4/9] virtio: handle virtqueue_map_desc() erro
From: |
Cornelia Huck |
Subject: |
Re: [Qemu-devel] [PATCH v4 4/9] virtio: handle virtqueue_map_desc() errors |
Date: |
Wed, 21 Sep 2016 13:15:41 +0200 |
On Wed, 21 Sep 2016 09:02:35 +0200
Greg Kurz <address@hidden> wrote:
> On Tue, 20 Sep 2016 15:49:33 +0100
> Stefan Hajnoczi <address@hidden> wrote:
>
> > Errors can occur during virtqueue_pop(), especially in
> > virtqueue_map_desc(). In order to handle this we must unmap iov[]
> > before returning NULL. The caller will consider the virtqueue empty and
> > the virtio_error() call will have marked the device broken.
> >
> > Signed-off-by: Stefan Hajnoczi <address@hidden>
> > ---
>
> Hi Stefan,
>
> FWIW, Prasad's "virtio: add check for descriptor's mapped address" is already
> in Michael's tree:
>
> https://git.kernel.org/cgit/virt/kvm/mst/qemu.git/commit/?h=pci&id=13c9ed60de6faaed325804620d13e7be37ea8183
>
> I guess this patch should take it into account (as already suggested by
> Laszlo).
Agreed.
(...)
> > +/* Only used by error code paths before we have a VirtQueueElement
> > (therefore
> > + * virtqueue_unmap_sg() can't be used). Assumes buffers weren't written to
> > + * yet.
> > + */
> > +static void virtqueue_undo_map_desc(unsigned out_num, unsigned in_num,
Should the arguments use 'unsigned int' as well, for consistency's sake?
> > + struct iovec *iov)
> > +{
> > + unsigned int i;
> > +
> > + for (i = 0; i < out_num + in_num; i++) {
> > + int is_write = i >= out_num;
> > +
> > + cpu_physical_memory_unmap(iov->iov_base, iov->iov_len, is_write,
> > 0);
> > + iov++;
> > + }
> > }
- [Qemu-devel] [PATCH v4 0/9] virtio: avoid exit() when device enters invalid states, Stefan Hajnoczi, 2016/09/20
- [Qemu-devel] [PATCH v4 1/9] virtio: fix stray tab character, Stefan Hajnoczi, 2016/09/20
- [Qemu-devel] [PATCH v4 2/9] virtio: stop virtqueue processing if device is broken, Stefan Hajnoczi, 2016/09/20
- [Qemu-devel] [PATCH v4 3/9] virtio: migrate vdev->broken flag, Stefan Hajnoczi, 2016/09/20
- [Qemu-devel] [PATCH v4 4/9] virtio: handle virtqueue_map_desc() errors, Stefan Hajnoczi, 2016/09/20
- [Qemu-devel] [PATCH v4 6/9] virtio: use unsigned int for virtqueue_get_avail_bytes() index, Stefan Hajnoczi, 2016/09/20
- [Qemu-devel] [PATCH v4 7/9] virtio: handle virtqueue_read_next_desc() errors, Stefan Hajnoczi, 2016/09/20
- [Qemu-devel] [PATCH v4 5/9] virtio: handle virtqueue_get_avail_bytes() errors, Stefan Hajnoczi, 2016/09/20
- [Qemu-devel] [PATCH v4 8/9] virtio: handle virtqueue_num_heads() errors, Stefan Hajnoczi, 2016/09/20
- [Qemu-devel] [PATCH v4 9/9] virtio: handle virtqueue_get_head() errors, Stefan Hajnoczi, 2016/09/20
- Re: [Qemu-devel] [PATCH v4 0/9] virtio: avoid exit() when device enters invalid states, Cornelia Huck, 2016/09/21