net/mlx5e: Set tx reporter only on successful creation
authorAya Levin <ayal@mellanox.com>
Mon, 24 Jun 2019 16:34:42 +0000 (19:34 +0300)
committerSaeed Mahameed <saeedm@mellanox.com>
Thu, 1 Aug 2019 19:33:32 +0000 (12:33 -0700)
When failing to create tx reporter, don't set the reporter's pointer.
Creating a reporter is not mandatory for driver load, avoid
garbage/error pointer.

Signed-off-by: Aya Levin <ayal@mellanox.com>
Reviewed-by: Tariq Toukan <tariqt@mellanox.com>
Acked-by: Jiri Pirko <jiri@mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
drivers/net/ethernet/mellanox/mlx5/core/en/reporter_tx.c
drivers/net/ethernet/mellanox/mlx5/core/en_main.c

index 383ecfd85d8a6232886705c3f9aab5d386b49f3c..f1c652f75718c569c8ddb846b22b5804a094ab52 100644 (file)
@@ -117,7 +117,7 @@ static int mlx5_tx_health_report(struct devlink_health_reporter *tx_reporter,
                                 char *err_str,
                                 struct mlx5e_tx_err_ctx *err_ctx)
 {
-       if (IS_ERR_OR_NULL(tx_reporter)) {
+       if (!tx_reporter) {
                netdev_err(err_ctx->sq->channel->netdev, err_str);
                return err_ctx->recover(err_ctx->sq);
        }
@@ -289,25 +289,27 @@ static const struct devlink_health_reporter_ops mlx5_tx_reporter_ops = {
 
 int mlx5e_tx_reporter_create(struct mlx5e_priv *priv)
 {
+       struct devlink_health_reporter *reporter;
        struct mlx5_core_dev *mdev = priv->mdev;
        struct devlink *devlink = priv_to_devlink(mdev);
 
-       priv->tx_reporter =
+       reporter =
                devlink_health_reporter_create(devlink, &mlx5_tx_reporter_ops,
                                               MLX5_REPORTER_TX_GRACEFUL_PERIOD,
                                               true, priv);
-       if (IS_ERR(priv->tx_reporter)) {
+       if (IS_ERR(reporter)) {
                netdev_warn(priv->netdev,
                            "Failed to create tx reporter, err = %ld\n",
-                           PTR_ERR(priv->tx_reporter));
-               return PTR_ERR(priv->tx_reporter);
+                           PTR_ERR(reporter));
+               return PTR_ERR(reporter);
        }
+       priv->tx_reporter = reporter;
        return 0;
 }
 
 void mlx5e_tx_reporter_destroy(struct mlx5e_priv *priv)
 {
-       if (IS_ERR_OR_NULL(priv->tx_reporter))
+       if (!priv->tx_reporter)
                return;
 
        devlink_health_reporter_destroy(priv->tx_reporter);
index e75cb18c2256745e5894eebd030cdde5dadbb2ff..4db595a7eb03bb420972826dbde49a297a65a942 100644 (file)
@@ -2325,7 +2325,7 @@ int mlx5e_open_channels(struct mlx5e_priv *priv,
                        goto err_close_channels;
        }
 
-       if (!IS_ERR_OR_NULL(priv->tx_reporter))
+       if (priv->tx_reporter)
                devlink_health_reporter_state_update(priv->tx_reporter,
                                                     DEVLINK_HEALTH_REPORTER_STATE_HEALTHY);