On Mon, Aug 14, 2017 at 02:32:24PM +0300, Matan Azrad wrote: > The corrupted code didn't unlock the spinlock in xstats > get and reset functions error flow. > > Hence, if these errors happaned, the device spinlock was > left locked and many mlx5 device functionalities were blocked. > > The fix unlocks the spinlock in the missed places. > > Fixes: e62bc9e70608 ("net/mlx5: fix extended statistics") > > Signed-off-by: Matan Azrad <ma...@mellanox.com> > Cc: sta...@dpdk.org > --- > drivers/net/mlx5/mlx5_stats.c | 7 +++++-- > 1 file changed, 5 insertions(+), 2 deletions(-) > > diff --git a/drivers/net/mlx5/mlx5_stats.c b/drivers/net/mlx5/mlx5_stats.c > index 703f48c..33997af 100644 > --- a/drivers/net/mlx5/mlx5_stats.c > +++ b/drivers/net/mlx5/mlx5_stats.c > @@ -442,8 +442,10 @@ mlx5_xstats_get(struct rte_eth_dev *dev, > > priv_lock(priv); > stats_n = priv_ethtool_get_stats_n(priv); > - if (stats_n < 0) > + if (stats_n < 0) { > + priv_unlock(priv); > return -1; > + } > if (xstats_ctrl->stats_n != stats_n) > priv_xstats_init(priv); > ret = priv_xstats_get(priv, stats); > @@ -468,10 +470,11 @@ mlx5_xstats_reset(struct rte_eth_dev *dev) > priv_lock(priv); > stats_n = priv_ethtool_get_stats_n(priv); > if (stats_n < 0) > - return; > + goto unlock; > if (xstats_ctrl->stats_n != stats_n) > priv_xstats_init(priv); > priv_xstats_reset(priv); > +unlock: > priv_unlock(priv); > } > > -- > 2.7.4 >
Acked-by: Nelio Laranjeiro <nelio.laranje...@6wind.com> -- Nélio Laranjeiro 6WIND