OSDN Git Service

xen/netfront: stop tx queues during live migration
authorDongli Zhang <dongli.zhang@oracle.com>
Fri, 22 Oct 2021 23:31:39 +0000 (16:31 -0700)
committerDavid S. Miller <davem@davemloft.net>
Mon, 25 Oct 2021 15:13:12 +0000 (16:13 +0100)
commit042b2046d0f05cf8124c26ff65dbb6148a4404fb
tree6fd23a47c94c2f0f7ddda58561581f8cf20d975f
parent0c57eeecc559ca6bc18b8c4e2808bc78dbe769b0
xen/netfront: stop tx queues during live migration

The tx queues are not stopped during the live migration. As a result, the
ndo_start_xmit() may access netfront_info->queues which is freed by
talk_to_netback()->xennet_destroy_queues().

This patch is to netif_device_detach() at the beginning of xen-netfront
resuming, and netif_device_attach() at the end of resuming.

     CPU A                                CPU B

 talk_to_netback()
 -> if (info->queues)
        xennet_destroy_queues(info);
    to free netfront_info->queues

                                        xennet_start_xmit()
                                        to access netfront_info->queues

  -> err = xennet_create_queues(info, &num_queues);

The idea is borrowed from virtio-net.

Cc: Joe Jin <joe.jin@oracle.com>
Signed-off-by: Dongli Zhang <dongli.zhang@oracle.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/xen-netfront.c