net/vhost: prevent multiple setups on reconfiguration
authorMaxime Coquelin <maxime.coquelin@redhat.com>
Tue, 18 Feb 2020 17:22:40 +0000 (18:22 +0100)
committerFerruh Yigit <ferruh.yigit@intel.com>
Wed, 19 Feb 2020 12:51:06 +0000 (13:51 +0100)
Ethdev's .dev_configure callback can be called multiple
time during a device life-time, but Vhost makes the
wrong assumption that it is not the case and try to
setup again the device on reconfiguration.

This patch ensures the device hasn't been already setup
before proceeding.

Fixes: 3d01b759d267 ("net/vhost: delay driver setup")
Cc: stable@dpdk.org
Reported-by: Yinan Wang <yinan.wang@intel.com>
Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Tested-by: Yinan Wang <yinan.wang@intel.com>
Reviewed-by: David Marchand <david.marchand@redhat.com>
Reviewed-by: Tiwei Bie <tiwei.bie@intel.com>
drivers/net/vhost/rte_eth_vhost.c

index 4a7b1b6..458ed58 100644 (file)
@@ -876,6 +876,11 @@ vhost_driver_setup(struct rte_eth_dev *eth_dev)
        unsigned int numa_node = eth_dev->device->numa_node;
        const char *name = eth_dev->device->name;
 
+       /* Don't try to setup again if it has already been done. */
+       list = find_internal_resource(internal->iface_name);
+       if (list)
+               return 0;
+
        list = rte_zmalloc_socket(name, sizeof(*list), 0, numa_node);
        if (list == NULL)
                return -1;