From 971c19c77c03df51aaea78648908ef269d8e0c42 Mon Sep 17 00:00:00 2001 From: Xiao Wang Date: Fri, 14 Sep 2018 09:25:17 +0800 Subject: [PATCH] net/ifc: do not notify before HW ready If the device is not clearly reset by the previous driver and holds some invalid ring addr, and the relay thread kicks it before HW is properly re-configured, a bad DMA request may happen. Besides, the notify_addr which is used by the relay thread is set in the vdpa_ifcvf_start function, if a kick relay happens before vdpa_ifcvf_start finishes, a null addr is accessed. Fixes: a3f8150eac6d ("net/ifcvf: add ifcvf vDPA driver") Cc: stable@dpdk.org Signed-off-by: Xiao Wang Reviewed-by: Xiaolong Ye --- drivers/net/ifc/ifcvf_vdpa.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/net/ifc/ifcvf_vdpa.c b/drivers/net/ifc/ifcvf_vdpa.c index 88d8140377..b9d0068149 100644 --- a/drivers/net/ifc/ifcvf_vdpa.c +++ b/drivers/net/ifc/ifcvf_vdpa.c @@ -469,11 +469,11 @@ update_datapath(struct ifcvf_internal *internal) if (ret) goto err; - ret = setup_notify_relay(internal); + ret = vdpa_ifcvf_start(internal); if (ret) goto err; - ret = vdpa_ifcvf_start(internal); + ret = setup_notify_relay(internal); if (ret) goto err; @@ -481,12 +481,12 @@ update_datapath(struct ifcvf_internal *internal) } else if (rte_atomic32_read(&internal->running) && (!rte_atomic32_read(&internal->started) || !rte_atomic32_read(&internal->dev_attached))) { - vdpa_ifcvf_stop(internal); - ret = unset_notify_relay(internal); if (ret) goto err; + vdpa_ifcvf_stop(internal); + ret = vdpa_disable_vfio_intr(internal); if (ret) goto err; -- 2.20.1