Hi Pavlo, On Fri, Sep 29, 2017 at 03:03:56AM +0300, Pavlo Shcherbyna wrote: > If priv_ethtool_get_stats_n fails to retrieve statistics, lock > is not released. Next call of function, which uses the same > spinlock, will stuck trying to obtain it. > > This patch addresses the issue. > > Fixes: 4b2e6df26168 ("net/mlx5: fix extended statistics counters > identification") > Cc: shah...@mellanox.com > > Signed-off-by: Pavlo Shcherbyna <pavlo.shcherb...@harmonicinc.com> > --- > drivers/net/mlx5/mlx5_stats.c | 8 ++++++-- > 1 file changed, 6 insertions(+), 2 deletions(-) > > diff --git a/drivers/net/mlx5/mlx5_stats.c b/drivers/net/mlx5/mlx5_stats.c > index 703f48c..8764829 100644 > --- a/drivers/net/mlx5/mlx5_stats.c > +++ b/drivers/net/mlx5/mlx5_stats.c > @@ -442,8 +442,10 @@ struct mlx5_counter_ctrl { > > 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); > @@ -467,8 +469,10 @@ struct mlx5_counter_ctrl { > > priv_lock(priv); > stats_n = priv_ethtool_get_stats_n(priv); > - if (stats_n < 0) > + if (stats_n < 0) { > + priv_unlock(priv); > return; > + } > if (xstats_ctrl->stats_n != stats_n) > priv_xstats_init(priv); > priv_xstats_reset(priv); > -- > 1.7.10.4
This bug is already fixed in next-net/master [1][2]. Thanks for your contribution. [1] http://dpdk.org/ml/archives/dev/2017-August/072864.html [2] http://dpdk.org/ml/archives/dev/2017-August/073404.html -- Nélio Laranjeiro 6WIND