qemu-stable
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-stable] [2.2 PATCH V2] virtio-net: fix unmap leak


From: Stefano Stabellini
Subject: Re: [Qemu-stable] [2.2 PATCH V2] virtio-net: fix unmap leak
Date: Thu, 27 Nov 2014 14:54:47 +0000
User-agent: Alpine 2.02 (DEB 1266 2009-07-14)

On Thu, 27 Nov 2014, Peter Maydell wrote:
> On 27 November 2014 at 12:42, Peter Maydell <address@hidden> wrote:
> > On 27 November 2014 at 12:33, Michael S. Tsirkin <address@hidden> wrote:
> >> On Thu, Nov 27, 2014 at 06:04:03PM +0800, Jason Wang wrote:
> >>> virtio_net_handle_ctrl() and other functions that process control vq
> >>> request call iov_discard_front() which will shorten the iov. This will
> >>> lead unmapping in virtqueue_push() leaks mapping.
> >>>
> >>> Fixes this by keeping the original iov untouched and using a temp variable
> >>> in those functions.
> >>>
> >>> Cc: Wen Congyang <address@hidden>
> >>> Cc: Stefano Stabellini <address@hidden>
> >>> Cc: address@hidden
> >>> Signed-off-by: Jason Wang <address@hidden>
> >>
> >> Reviewed-by: Michael S. Tsirkin <address@hidden>
> >>
> >> Peter, can you pick this up or do you want a pull request?
> >
> > I can pick it up. I was waiting a bit to check that everybody
> > was happy that this is the correct way to fix the bug and the
> > patch is ok...
> 
> ...but discussing this with Stefan H on IRC we realised that the same
> issue also (at least potentially) affects virtio-blk, which suggests
> that we should fix this by making the core virtio code cope with
> backends which modify the sglists.

I think that a similar patch could be produced against
hw/block/virtio-blk.c:virtio_blk_handle_request

Alternatively my series would help by introducing virtqueue_unmap_sg and
moving it out of virtqueue_fill. We could call virtqueue_unmap_sg from
the drivers (instead of calling it from virtqueue_push) and that would
solve the issue.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]