From 366a0500f432a862f37ab2ca220e60f5654eadd7 Mon Sep 17 00:00:00 2001 From: Maxime Coquelin Date: Tue, 18 Feb 2020 18:22:40 +0100 Subject: [PATCH] net/vhost: prevent multiple setups on reconfiguration 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 Signed-off-by: Maxime Coquelin Tested-by: Yinan Wang Reviewed-by: David Marchand Reviewed-by: Tiwei Bie --- drivers/net/vhost/rte_eth_vhost.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/drivers/net/vhost/rte_eth_vhost.c b/drivers/net/vhost/rte_eth_vhost.c index 4a7b1b608c..458ed58f5f 100644 --- a/drivers/net/vhost/rte_eth_vhost.c +++ b/drivers/net/vhost/rte_eth_vhost.c @@ -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; -- 2.20.1