virtio-net: Keep stop() to follow mirror sequence of open()
authorParav Pandit <parav@nvidia.com>
Thu, 2 Feb 2023 16:35:16 +0000 (18:35 +0200)
committerJakub Kicinski <kuba@kernel.org>
Thu, 2 Feb 2023 18:10:53 +0000 (10:10 -0800)
Cited commit in fixes tag frees rxq xdp info while RQ NAPI is
still enabled and packet processing may be ongoing.

Follow the mirror sequence of open() in the stop() callback.
This ensures that when rxq info is unregistered, no rx
packet processing is ongoing.

Fixes: 754b8a21a96d ("virtio_net: setup xdp_rxq_info")
Acked-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Jiri Pirko <jiri@nvidia.com>
Signed-off-by: Parav Pandit <parav@nvidia.com>
Link: https://lore.kernel.org/r/20230202163516.12559-1-parav@nvidia.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/virtio_net.c

index 6df14dd5bf4608a509ad30f119948e0a75d7739b..61e33e4dd0cd66f689863b5d5f33fd980124ae09 100644 (file)
@@ -2158,8 +2158,8 @@ static int virtnet_close(struct net_device *dev)
        cancel_delayed_work_sync(&vi->refill);
 
        for (i = 0; i < vi->max_queue_pairs; i++) {
-               xdp_rxq_info_unreg(&vi->rq[i].xdp_rxq);
                napi_disable(&vi->rq[i].napi);
+               xdp_rxq_info_unreg(&vi->rq[i].xdp_rxq);
                virtnet_napi_tx_disable(&vi->sq[i].napi);
        }