From 3f2ef27972a6f60e4e41aceba1f9b53a553ff065 Mon Sep 17 00:00:00 2001 From: Darek Stojaczyk Date: Fri, 26 Oct 2018 09:54:59 +0200 Subject: [PATCH] bus/pci: propagate probing error codes In a couple of places we check its error code against -EEXIST, but this function returned either -1, 0, or 1. This gets critical when hotplugging a device in secondary process, while the same device is already plugged in the primary. Failing to "hotplug" it in the primary will cause the secondary to fail as well. Fixes: e9d159c3d534 ("eal: allow probing a device again") Signed-off-by: Darek Stojaczyk Acked-by: Thomas Monjalon --- drivers/bus/pci/pci_common.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/bus/pci/pci_common.c b/drivers/bus/pci/pci_common.c index feb79803c1..6276e5d695 100644 --- a/drivers/bus/pci/pci_common.c +++ b/drivers/bus/pci/pci_common.c @@ -243,7 +243,7 @@ rte_pci_detach_dev(struct rte_pci_device *dev) /* * If vendor/device ID match, call the probe() function of all - * registered driver for the given device. Return -1 if initialization + * registered driver for the given device. Return < 0 if initialization * failed, return 1 if no driver is found for this device. */ static int @@ -253,13 +253,13 @@ pci_probe_all_drivers(struct rte_pci_device *dev) int rc = 0; if (dev == NULL) - return -1; + return -EINVAL; FOREACH_DRIVER_ON_PCIBUS(dr) { rc = rte_pci_probe_one_driver(dr, dev); if (rc < 0) /* negative value is an error */ - return -1; + return rc; if (rc > 0) /* positive value means driver doesn't support it */ continue; -- 2.20.1