aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSaurav Kashyap <[email protected]>2024-05-15 14:40:59 +0530
committerMartin K. Petersen <[email protected]>2024-05-15 10:26:53 -0400
commit51071f0831ea975fc045526dd7e17efe669dc6e1 (patch)
treef779f1ffe46078c0ea7bac11b9e6f5aa0bed27d9
parent9fad9d560af5c654bb38e0b07ee54a4e9acdc5cd (diff)
scsi: qedf: Don't process stag work during unload and recovery
Stag work can cause issues during unload and recovery, hence don't process it. Signed-off-by: Saurav Kashyap <[email protected]> Signed-off-by: Nilesh Javali <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Martin K. Petersen <[email protected]>
-rw-r--r--drivers/scsi/qedf/qedf_main.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/drivers/scsi/qedf/qedf_main.c b/drivers/scsi/qedf/qedf_main.c
index fd12439cbaab..c457caae07b3 100644
--- a/drivers/scsi/qedf/qedf_main.c
+++ b/drivers/scsi/qedf/qedf_main.c
@@ -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);