Blob Blame History Raw
From f25db32978b9c901d1e89325b0fcf76e663a8baa Mon Sep 17 00:00:00 2001
From: Alaa Hleihel <ahleihel@redhat.com>
Date: Tue, 12 May 2020 10:54:23 -0400
Subject: [PATCH 156/312] [netdrv] net/mlx5e: Fix crash in recovery flow
 without devlink reporter

Message-id: <20200512105530.4207-58-ahleihel@redhat.com>
Patchwork-id: 306928
Patchwork-instance: patchwork
O-Subject: [RHEL8.3 BZ 1789382 057/124] net/mlx5e: Fix crash in recovery flow without devlink reporter
Bugzilla: 1789382
RH-Acked-by: Tony Camuso <tcamuso@redhat.com>
RH-Acked-by: Kamal Heib <kheib@redhat.com>
RH-Acked-by: Jarod Wilson <jarod@redhat.com>

Bugzilla: http://bugzilla.redhat.com/1789382
Upstream: v5.6-rc3

commit 1ad6c43c6a7b8627240c6cc19c69e31fedc596a7
Author: Aya Levin <ayal@mellanox.com>
Date:   Wed Feb 12 15:17:25 2020 +0200

    net/mlx5e: Fix crash in recovery flow without devlink reporter

    When health reporters are not supported, recovery function is invoked
    directly, not via devlink health reporters.

    In this direct flow, the recover function input parameter was passed
    incorrectly and is causing a kernel oops. This patch is fixing the input
    parameter.

    Following call trace is observed on rx error health reporting.

    Internal error: Oops: 96000007 [#1] PREEMPT SMP
    Process kworker/u16:4 (pid: 4584, stack limit = 0x00000000c9e45703)
    Call trace:
    mlx5e_rx_reporter_err_rq_cqe_recover+0x30/0x164 [mlx5_core]
    mlx5e_health_report+0x60/0x6c [mlx5_core]
    mlx5e_reporter_rq_cqe_err+0x6c/0x90 [mlx5_core]
    mlx5e_rq_err_cqe_work+0x20/0x2c [mlx5_core]
    process_one_work+0x168/0x3d0
    worker_thread+0x58/0x3d0
    kthread+0x108/0x134

    Fixes: c50de4af1d63 ("net/mlx5e: Generalize tx reporter's functionality")
    Signed-off-by: Aya Levin <ayal@mellanox.com>
    Signed-off-by: Parav Pandit <parav@mellanox.com>
    Reviewed-by: Tariq Toukan <tariqt@mellanox.com>
    Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>

Signed-off-by: Alaa Hleihel <ahleihel@redhat.com>
Signed-off-by: Frantisek Hrbata <fhrbata@redhat.com>
---
 drivers/net/ethernet/mellanox/mlx5/core/en/health.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en/health.c b/drivers/net/ethernet/mellanox/mlx5/core/en/health.c
index 3a975641f902..20b907dc1e29 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/en/health.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en/health.c
@@ -200,7 +200,7 @@ int mlx5e_health_report(struct mlx5e_priv *priv,
 	netdev_err(priv->netdev, err_str);
 
 	if (!reporter)
-		return err_ctx->recover(&err_ctx->ctx);
+		return err_ctx->recover(err_ctx->ctx);
 
 	return devlink_health_report(reporter, err_str, err_ctx);
 }
-- 
2.13.6