[dpdk-dev] [PATCH] net/mlx5: fix xstats functions unlock missing

Nélio Laranjeiro nelio.laranjeiro at 6wind.com
Wed Aug 23 17:09:20 CEST 2017


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 <matan at mellanox.com>
> Cc: stable at 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.laranjeiro at 6wind.com>

-- 
Nélio Laranjeiro
6WIND


More information about the dev mailing list