When eth_virtio_dev_init is failed, the registered virtio user memory
event cb is not released and creating a new vdev could be failed
because the new virtio_user_dev could use the same address pointer and
register memory event cb to the same address is not allowed.

Signed-off-by: Harold Huang <baymaxhu...@gmail.com>
---
Compared PATCH v2, commit message is changed. The problem this patch want
to solve can be reproduced by ovs 2.16.90 and the latest dpdk.
 drivers/net/virtio/virtio_user_ethdev.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/net/virtio/virtio_user_ethdev.c 
b/drivers/net/virtio/virtio_user_ethdev.c
index 0271098f0d..16eca2f940 100644
--- a/drivers/net/virtio/virtio_user_ethdev.c
+++ b/drivers/net/virtio/virtio_user_ethdev.c
@@ -666,6 +666,7 @@ virtio_user_pmd_probe(struct rte_vdev_device *vdev)
        /* previously called by pci probing for physical dev */
        if (eth_virtio_dev_init(eth_dev) < 0) {
                PMD_INIT_LOG(ERR, "eth_virtio_dev_init fails");
+               virtio_user_dev_uninit(dev);
                virtio_user_eth_dev_free(eth_dev);
                goto end;
        }
-- 
2.27.0

Reply via email to