Discussion:
[PATCH 1/2] be2iscsi : Fix kernel panic during reboot/shutdown
John Soni Jose
2014-09-26 19:13:55 UTC
Permalink
In the reboot/shutdown path, workqueue was destroyed after the
adapter resource were freed. The task associated with workqueue
was getting executed after resources were freed. This lead to
kernel panic.

Signed-off-by: John Soni Jose <sony.john-***@emulex.com>
Signed-off-by: Jayamohan Kallickal <***@emulex.com>
---
drivers/scsi/be2iscsi/be_main.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/scsi/be2iscsi/be_main.c b/drivers/scsi/be2iscsi/be_main.c
index db2bd4d..30d74a0 100644
--- a/drivers/scsi/be2iscsi/be_main.c
+++ b/drivers/scsi/be2iscsi/be_main.c
@@ -5223,6 +5223,7 @@ static void beiscsi_quiesce(struct beiscsi_hba *phba,
free_irq(phba->pcidev->irq, phba);
}
pci_disable_msix(phba->pcidev);
+ cancel_delayed_work_sync(&phba->beiscsi_hw_check_task);

for (i = 0; i < phba->num_cpus; i++) {
pbe_eq = &phwi_context->be_eq[i];
@@ -5244,7 +5245,6 @@ static void beiscsi_quiesce(struct beiscsi_hba *phba,
hwi_cleanup(phba);
}

- cancel_delayed_work_sync(&phba->beiscsi_hw_check_task);
}

static void beiscsi_remove(struct pci_dev *pcidev)
--
1.7.1

--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to ***@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Ewan Milne
2014-10-02 14:21:39 UTC
Permalink
Post by John Soni Jose
In the reboot/shutdown path, workqueue was destroyed after the
adapter resource were freed. The task associated with workqueue
was getting executed after resources were freed. This lead to
kernel panic.
---
drivers/scsi/be2iscsi/be_main.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/drivers/scsi/be2iscsi/be_main.c b/drivers/scsi/be2iscsi/be_main.c
index db2bd4d..30d74a0 100644
--- a/drivers/scsi/be2iscsi/be_main.c
+++ b/drivers/scsi/be2iscsi/be_main.c
@@ -5223,6 +5223,7 @@ static void beiscsi_quiesce(struct beiscsi_hba *phba,
free_irq(phba->pcidev->irq, phba);
}
pci_disable_msix(phba->pcidev);
+ cancel_delayed_work_sync(&phba->beiscsi_hw_check_task);
for (i = 0; i < phba->num_cpus; i++) {
pbe_eq = &phwi_context->be_eq[i];
@@ -5244,7 +5245,6 @@ static void beiscsi_quiesce(struct beiscsi_hba *phba,
hwi_cleanup(phba);
}
- cancel_delayed_work_sync(&phba->beiscsi_hw_check_task);
}
static void beiscsi_remove(struct pci_dev *pcidev)
Reviewed-by: Ewan D. Milne <***@redhat.com>


--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to ***@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Loading...