提交 4244dd3a 编写于 作者: P Parav Pandit 提交者: zhaoxiaoqiang11

virtio-net: Keep stop() to follow mirror sequence of open()

stable inclusion
from stable-v5.10.168
commit 4fb430c6987817b5992e04b417755c339f72f8fe
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I7URR4

Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=4fb430c6987817b5992e04b417755c339f72f8fe

----------------------------------------------------

[ Upstream commit 63b11404 ]

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: 754b8a21 ("virtio_net: setup xdp_rxq_info")
Acked-by: NMichael S. Tsirkin <mst@redhat.com>
Reviewed-by: NJiri Pirko <jiri@nvidia.com>
Signed-off-by: NParav Pandit <parav@nvidia.com>
Link: https://lore.kernel.org/r/20230202163516.12559-1-parav@nvidia.comSigned-off-by: NJakub Kicinski <kuba@kernel.org>
Signed-off-by: NSasha Levin <sashal@kernel.org>
Signed-off-by: Nzhaoxiaoqiang11 <zhaoxiaoqiang11@jd.com>
上级 9abff091
...@@ -1928,8 +1928,8 @@ static int virtnet_close(struct net_device *dev) ...@@ -1928,8 +1928,8 @@ static int virtnet_close(struct net_device *dev)
cancel_delayed_work_sync(&vi->refill); cancel_delayed_work_sync(&vi->refill);
for (i = 0; i < vi->max_queue_pairs; i++) { for (i = 0; i < vi->max_queue_pairs; i++) {
xdp_rxq_info_unreg(&vi->rq[i].xdp_rxq);
napi_disable(&vi->rq[i].napi); napi_disable(&vi->rq[i].napi);
xdp_rxq_info_unreg(&vi->rq[i].xdp_rxq);
virtnet_napi_tx_disable(&vi->sq[i].napi); virtnet_napi_tx_disable(&vi->sq[i].napi);
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册