qemu-devel
[Top][All Lists]
Advanced

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

Re: [PATCH] virtio-pci: fix virtio_pci_queue_enabled()


From: Richard Henderson
Subject: Re: [PATCH] virtio-pci: fix virtio_pci_queue_enabled()
Date: Mon, 27 Jul 2020 09:15:15 -0700
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0

On 7/27/20 8:33 AM, Laurent Vivier wrote:
> In legacy mode, virtio_pci_queue_enabled() falls back to
> virtio_queue_enabled() to know if the queue is enabled.
> 
> But virtio_queue_enabled() calls again virtio_pci_queue_enabled()
> if k->queue_enabled is set. This ends in a crash after a stack
> overflow.
> 
> The problem can be reproduced with
> "-device virtio-net-pci,disable-legacy=off,disable-modern=true
>  -net tap,vhost=on"
> 
> And a look to the backtrace is very explicit:
> 
>     ...
>     #4  0x000000010029a438 in virtio_queue_enabled ()
>     #5  0x0000000100497a9c in virtio_pci_queue_enabled ()
>     ...
>     #130902 0x000000010029a460 in virtio_queue_enabled ()
>     #130903 0x0000000100497a9c in virtio_pci_queue_enabled ()
>     #130904 0x000000010029a460 in virtio_queue_enabled ()
>     #130905 0x0000000100454a20 in vhost_net_start ()
>     ...
> 
> This patch fixes the problem by introducing a new function
> for the legacy case and calls it from virtio_pci_queue_enabled().
> It also calls it from virtio_queue_enabled() to avoid code duplication.
> 
> Fixes: f19bcdfedd53 ("virtio-pci: implement queue_enabled method")
> Cc: Jason Wang <jasowang@redhat.com>
> Cc: Cindy Lu <lulu@redhat.com>
> CC: Michael S. Tsirkin <mst@redhat.com>
> Signed-off-by: Laurent Vivier <lvivier@redhat.com>
> ---

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>

r~



reply via email to

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