• J
    virtio-net: don't touch virtqueue if vm is stopped · 70e53e6e
    Jason Wang 提交于
    Guest state should not be touched if VM is stopped, unfortunately we
    didn't check running state and tried to drain tx queue unconditionally
    in virtio_net_set_status(). A crash was then noticed as a migration
    destination when user type quit after virtqueue state is loaded but
    before region cache is initialized. In this case,
    virtio_net_drop_tx_queue_data() tries to access the uninitialized
    region cache.
    
    Fix this by only dropping tx queue data when vm is running.
    
    Fixes: 283e2c2a ("net: virtio-net discards TX data after link down")
    Cc: Yuri Benditovich <yuri.benditovich@daynix.com>
    Cc: Paolo Bonzini <pbonzini@redhat.com>
    Cc: Stefan Hajnoczi <stefanha@redhat.com>
    Cc: Michael S. Tsirkin <mst@redhat.com>
    Cc: qemu-stable@nongnu.org
    Reviewed-by: NStefan Hajnoczi <stefanha@redhat.com>
    Signed-off-by: NJason Wang <jasowang@redhat.com>
    70e53e6e
virtio-net.c 66.9 KB