net/mlx5: fix uninit value use
authorPrzemek Kitszel <przemyslaw.kitszel@intel.com>
Wed, 25 Oct 2023 14:50:50 +0000 (16:50 +0200)
committerJakub Kicinski <kuba@kernel.org>
Thu, 26 Oct 2023 22:47:18 +0000 (15:47 -0700)
Avoid use of uninitialized state variable.

In case of mlx5e_tx_reporter_build_diagnose_output_sq_common() it's better
to still collect other data than bail out entirely.

Reported-by: Dan Carpenter <dan.carpenter@linaro.org>
Link: https://lore.kernel.org/netdev/8bd30131-c9f2-4075-a575-7fa2793a1760@moroto.mountain
Fixes: d17f98bf7cc9 ("net/mlx5: devlink health: use retained error fmsg API")
Signed-off-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
Reviewed-by: Michal Swiatkowski <michal.swiatkowski@linux.intel.com>
Link: https://lore.kernel.org/r/20231025145050.36114-1-przemyslaw.kitszel@intel.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/mellanox/mlx5/core/en/reporter_rx.c
drivers/net/ethernet/mellanox/mlx5/core/en/reporter_tx.c

index fc5a9fdd06db7e62c58f8096d22f33196d98c74a..fea8c0a5fe893b9f8abc06e22e1aa57e1df16425 100644 (file)
@@ -263,8 +263,12 @@ mlx5e_rx_reporter_build_diagnose_output_rq_common(struct mlx5e_rq *rq,
        if (rq->icosq) {
                struct mlx5e_icosq *icosq = rq->icosq;
                u8 icosq_hw_state;
+               int err;
+
+               err = mlx5_core_query_sq_state(rq->mdev, icosq->sqn, &icosq_hw_state);
+               if (err)
+                       return err;
 
-               mlx5_core_query_sq_state(rq->mdev, icosq->sqn, &icosq_hw_state);
                mlx5e_reporter_icosq_diagnose(icosq, icosq_hw_state, fmsg);
        }
 
index ccff7c26d6acfc7db17e18dd504ce457ebd00024..6b44ddce14e9840531da0fa3d952e2a298edf302 100644 (file)
@@ -221,12 +221,16 @@ mlx5e_tx_reporter_build_diagnose_output_sq_common(struct devlink_fmsg *fmsg,
        bool stopped = netif_xmit_stopped(sq->txq);
        struct mlx5e_priv *priv = sq->priv;
        u8 state;
+       int err;
 
-       mlx5_core_query_sq_state(priv->mdev, sq->sqn, &state);
        devlink_fmsg_u32_pair_put(fmsg, "tc", tc);
        devlink_fmsg_u32_pair_put(fmsg, "txq ix", sq->txq_ix);
        devlink_fmsg_u32_pair_put(fmsg, "sqn", sq->sqn);
-       devlink_fmsg_u8_pair_put(fmsg, "HW state", state);
+
+       err = mlx5_core_query_sq_state(priv->mdev, sq->sqn, &state);
+       if (!err)
+               devlink_fmsg_u8_pair_put(fmsg, "HW state", state);
+
        devlink_fmsg_bool_pair_put(fmsg, "stopped", stopped);
        devlink_fmsg_u32_pair_put(fmsg, "cc", sq->cc);
        devlink_fmsg_u32_pair_put(fmsg, "pc", sq->pc);