net/mlx5: fix error number handling
authorYongseok Koh <yskoh@mellanox.com>
Tue, 19 Jun 2018 23:13:13 +0000 (16:13 -0700)
committerFerruh Yigit <ferruh.yigit@intel.com>
Mon, 2 Jul 2018 23:35:57 +0000 (01:35 +0200)
rte_errno should be saved only if error has occurred because rte_errno
could have garbage value.

Fixes: a6d83b6a9209 ("net/mlx5: standardize on negative errno values")
Cc: stable@dpdk.org
Signed-off-by: Yongseok Koh <yskoh@mellanox.com>
Acked-by: Nelio Laranjeiro <nelio.laranjeiro@6wind.com>
drivers/net/mlx5/mlx5_flow.c

index 994be05..45207d7 100644 (file)
@@ -3561,15 +3561,17 @@ wrong_flow:
                /* The flow does not match. */
                continue;
        }
-       ret = rte_errno; /* Save rte_errno before cleanup. */
        if (flow)
                mlx5_flow_list_destroy(dev, &priv->flows, flow);
 exit:
+       if (ret)
+               ret = rte_errno; /* Save rte_errno before cleanup. */
        for (i = 0; i != hash_rxq_init_n; ++i) {
                if (parser.queue[i].ibv_attr)
                        rte_free(parser.queue[i].ibv_attr);
        }
-       rte_errno = ret; /* Restore rte_errno. */
+       if (ret)
+               rte_errno = ret; /* Restore rte_errno. */
        return -rte_errno;
 }