net/failsafe: fix failsafe bus uninit return value
authorRaslan Darawsheh <rasland@mellanox.com>
Tue, 29 Aug 2017 09:08:08 +0000 (12:08 +0300)
committerFerruh Yigit <ferruh.yigit@intel.com>
Fri, 6 Oct 2017 00:49:47 +0000 (02:49 +0200)
fs_bus_uninit is always returning 0 no matter what was the status
of each sub device bus_uninit value.

Fixes: a46f8d584eb8 ("net/failsafe: add fail-safe PMD")
Cc: stable@dpdk.org
Signed-off-by: Raslan Darawsheh <rasland@mellanox.com>
Acked-by: Gaetan Rivet <gaetan.rivet@6wind.com>
drivers/net/failsafe/failsafe_eal.c

index c8f4318..aeb87a0 100644 (file)
@@ -90,19 +90,20 @@ fs_bus_uninit(struct rte_eth_dev *dev)
 {
        struct sub_device *sdev = NULL;
        uint8_t i;
-       int ret;
+       int sdev_ret;
+       int ret = 0;
 
        FOREACH_SUBDEV_STATE(sdev, i, dev, DEV_PROBED) {
-               ret = rte_eal_hotplug_remove(sdev->bus->name,
-                                            sdev->dev->name);
-               if (ret) {
-                       ERROR("Failed to remove requested device %s",
-                             sdev->dev->name);
+               sdev_ret = rte_eal_hotplug_remove(sdev->bus->name,
+                                                       sdev->dev->name);
+               if (sdev_ret) {
+                       ERROR("Failed to remove requested device %s (err: %d)",
+                             sdev->dev->name, sdev_ret);
                        continue;
                }
                sdev->state = DEV_PROBED - 1;
        }
-       return 0;
+       return ret;
 }
 
 int
@@ -111,8 +112,6 @@ failsafe_eal_uninit(struct rte_eth_dev *dev)
        int ret;
 
        ret = fs_bus_uninit(dev);
-       if (ret)
-               return ret;
        PRIV(dev)->state = DEV_PROBED - 1;
-       return 0;
+       return ret;
 }