diff options
| author | Saurav Kashyap <skashyap@marvell.com> | 2019-08-23 05:52:40 -0400 |
|---|---|---|
| committer | Martin K. Petersen <martin.petersen@oracle.com> | 2019-08-29 18:51:19 -0400 |
| commit | 0482262646e4e9e089c4e75f336244c5eaf360e1 (patch) | |
| tree | 368f4cb1503a1989637bf41c53afd0d4b08b676d /drivers/scsi/qedf | |
| parent | b29a907f105cc659a303bb2657959c7d0d188620 (diff) | |
scsi: qedf: Check for module unloading bit before processing link update AEN
Prevent race where we're removing the module and we get link update
Signed-off-by: Saurav Kashyap <skashyap@marvell.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Diffstat (limited to 'drivers/scsi/qedf')
| -rw-r--r-- | drivers/scsi/qedf/qedf_main.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/scsi/qedf/qedf_main.c b/drivers/scsi/qedf/qedf_main.c index 50b1fa8740da..ab9a932089ae 100644 --- a/drivers/scsi/qedf/qedf_main.c +++ b/drivers/scsi/qedf/qedf_main.c | |||
| @@ -533,6 +533,16 @@ static void qedf_link_update(void *dev, struct qed_link_output *link) | |||
| 533 | { | 533 | { |
| 534 | struct qedf_ctx *qedf = (struct qedf_ctx *)dev; | 534 | struct qedf_ctx *qedf = (struct qedf_ctx *)dev; |
| 535 | 535 | ||
| 536 | /* | ||
| 537 | * Prevent race where we're removing the module and we get link update | ||
| 538 | * for qed. | ||
| 539 | */ | ||
| 540 | if (test_bit(QEDF_UNLOADING, &qedf->flags)) { | ||
| 541 | QEDF_ERR(&qedf->dbg_ctx, | ||
| 542 | "Ignore link update, driver getting unload.\n"); | ||
| 543 | return; | ||
| 544 | } | ||
| 545 | |||
| 536 | if (link->link_up) { | 546 | if (link->link_up) { |
| 537 | if (atomic_read(&qedf->link_state) == QEDF_LINK_UP) { | 547 | if (atomic_read(&qedf->link_state) == QEDF_LINK_UP) { |
| 538 | QEDF_INFO((&qedf->dbg_ctx), QEDF_LOG_DISC, | 548 | QEDF_INFO((&qedf->dbg_ctx), QEDF_LOG_DISC, |
