]> git.hungrycats.org Git - linux/commitdiff
scsi: qedf: Don't process stag work during unload and recovery
authorSaurav Kashyap <skashyap@marvell.com>
Wed, 15 May 2024 09:10:59 +0000 (14:40 +0530)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 25 Jul 2024 07:53:19 +0000 (09:53 +0200)
[ Upstream commit 51071f0831ea975fc045526dd7e17efe669dc6e1 ]

Stag work can cause issues during unload and recovery, hence don't process
it.

Signed-off-by: Saurav Kashyap <skashyap@marvell.com>
Signed-off-by: Nilesh Javali <njavali@marvell.com>
Link: https://lore.kernel.org/r/20240515091101.18754-2-skashyap@marvell.com
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/scsi/qedf/qedf_main.c

index a58353b7b4e8bad1430581b09cb0c08a8b85125c..e882aec8676531c7175e5ffa54f19ed75ad9c46e 100644 (file)
@@ -3997,6 +3997,22 @@ void qedf_stag_change_work(struct work_struct *work)
        struct qedf_ctx *qedf =
            container_of(work, struct qedf_ctx, stag_work.work);
 
+       if (!qedf) {
+               QEDF_ERR(&qedf->dbg_ctx, "qedf is NULL");
+               return;
+       }
+
+       if (test_bit(QEDF_IN_RECOVERY, &qedf->flags)) {
+               QEDF_ERR(&qedf->dbg_ctx,
+                        "Already is in recovery, hence not calling software context reset.\n");
+               return;
+       }
+
+       if (test_bit(QEDF_UNLOADING, &qedf->flags)) {
+               QEDF_ERR(&qedf->dbg_ctx, "Driver unloading\n");
+               return;
+       }
+
        printk_ratelimited("[%s]:[%s:%d]:%d: Performing software context reset.",
                        dev_name(&qedf->pdev->dev), __func__, __LINE__,
                        qedf->dbg_ctx.host_no);