diff mbox series

virtio-net: fix removal of failover device

Message ID 20200703114813.5911-1-quintela@redhat.com (mailing list archive)
State New, archived
Headers show
Series virtio-net: fix removal of failover device | expand

Commit Message

Juan Quintela July 3, 2020, 11:48 a.m. UTC
If you have a networking device and its virtio failover device, and
you remove them in this order:
- virtio device
- the real device

You get qemu crash.
See bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1820120

Bug exist on qemu 4.2 and 5.0.
But in 5.0 don't shows because commit
77b06bba62034a87cc61a9c8de1309ae3e527d97

somehow papers over it.

CC: Jason Wang <jasowang@redhat.com>
CC: Michael S. Tsirkin <mst@redhat.com>

Signed-off-by: Juan Quintela <quintela@redhat.com>
---
 hw/net/virtio-net.c | 1 +
 1 file changed, 1 insertion(+)

Comments

Michael S. Tsirkin July 3, 2020, 11:59 a.m. UTC | #1
On Fri, Jul 03, 2020 at 01:48:13PM +0200, Juan Quintela wrote:
> If you have a networking device and its virtio failover device, and
> you remove them in this order:
> - virtio device
> - the real device
> 
> You get qemu crash.
> See bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1820120
> 
> Bug exist on qemu 4.2 and 5.0.
> But in 5.0 don't shows because commit
> 77b06bba62034a87cc61a9c8de1309ae3e527d97
> 
> somehow papers over it.
> 
> CC: Jason Wang <jasowang@redhat.com>
> CC: Michael S. Tsirkin <mst@redhat.com>
> 
> Signed-off-by: Juan Quintela <quintela@redhat.com>

Reviewed-by: Michael S. Tsirkin <mst@redhat.com>


Jason can you queue this pls?

> ---
>  hw/net/virtio-net.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/hw/net/virtio-net.c b/hw/net/virtio-net.c
> index 9bb5578e5d..8d84713df3 100644
> --- a/hw/net/virtio-net.c
> +++ b/hw/net/virtio-net.c
> @@ -3398,6 +3398,7 @@ static void virtio_net_device_unrealize(DeviceState *dev)
>      g_free(n->vlans);
>  
>      if (n->failover) {
> +        device_listener_unregister(&n->primary_listener);
>          g_free(n->primary_device_id);
>          g_free(n->standby_id);
>          qobject_unref(n->primary_device_dict);
> -- 
> 2.25.4
Jason Wang July 7, 2020, 7:38 a.m. UTC | #2
On 2020/7/3 下午7:59, Michael S. Tsirkin wrote:
> On Fri, Jul 03, 2020 at 01:48:13PM +0200, Juan Quintela wrote:
>> If you have a networking device and its virtio failover device, and
>> you remove them in this order:
>> - virtio device
>> - the real device
>>
>> You get qemu crash.
>> See bugzilla:https://bugzilla.redhat.com/show_bug.cgi?id=1820120
>>
>> Bug exist on qemu 4.2 and 5.0.
>> But in 5.0 don't shows because commit
>> 77b06bba62034a87cc61a9c8de1309ae3e527d97
>>
>> somehow papers over it.
>>
>> CC: Jason Wang<jasowang@redhat.com>
>> CC: Michael S. Tsirkin<mst@redhat.com>
>>
>> Signed-off-by: Juan Quintela<quintela@redhat.com>
> Reviewed-by: Michael S. Tsirkin<mst@redhat.com>
>
>
> Jason can you queue this pls?


Queued.

Thanks


>
diff mbox series

Patch

diff --git a/hw/net/virtio-net.c b/hw/net/virtio-net.c
index 9bb5578e5d..8d84713df3 100644
--- a/hw/net/virtio-net.c
+++ b/hw/net/virtio-net.c
@@ -3398,6 +3398,7 @@  static void virtio_net_device_unrealize(DeviceState *dev)
     g_free(n->vlans);
 
     if (n->failover) {
+        device_listener_unregister(&n->primary_listener);
         g_free(n->primary_device_id);
         g_free(n->standby_id);
         qobject_unref(n->primary_device_dict);