From: Himanshu Madhani Date: Mon, 16 Oct 2017 18:26:05 +0000 (-0700) Subject: scsi: qla2xxx: Initialize Work element before requesting IRQs X-Git-Tag: v4.1.12-117.0_27200813_3~8 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=f4a6e59085ec82889cea99c7f0453fbb6f7b4046;p=users%2Fjedix%2Flinux-maple.git scsi: qla2xxx: Initialize Work element before requesting IRQs commit a9e170e28636 ("scsi: qla2xxx: Fix uninitialized work element") moved initializiation of work element earlier in the probe to fix call stack. However, it still leaves a window where interrupt can be generated before work element is initialized. Fix that window by initializing work element before we are requesting IRQs. [mkp: fixed typos] Fixes: a9e170e28636 ("scsi: qla2xxx: Fix uninitialized work element") Cc: # 4.13 Signed-off-by: Himanshu Madhani Signed-off-by: Quinn Tran Signed-off-by: Martin K. Petersen (cherry picked from commit 1010f21ecf8ac43be676d498742de18fa6c20987) Orabug: 27184882 Signed-off-by: Shan Hai Reviewed-by: Ethan Zhao --- diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c index 6784d106dc2c..232c50cc9c57 100644 --- a/drivers/scsi/qla2xxx/qla_os.c +++ b/drivers/scsi/qla2xxx/qla_os.c @@ -2901,6 +2901,8 @@ qla2x00_probe_one(struct pci_dev *pdev, const struct pci_device_id *id) host->max_cmd_len, host->max_channel, host->max_lun, host->transportt, sht->vendor_id); + INIT_WORK(&base_vha->iocb_work, qla2x00_iocb_work_fn); + /* Set up the irqs */ ret = qla2x00_request_irqs(ha, rsp); if (ret) @@ -3016,8 +3018,6 @@ qla2x00_probe_one(struct pci_dev *pdev, const struct pci_device_id *id) host->can_queue, base_vha->req, base_vha->mgmt_svr_loop_id, host->sg_tablesize); - INIT_WORK(&base_vha->iocb_work, qla2x00_iocb_work_fn); - if (ha->mqenable) { base_vha->qps_hint = alloc_percpu(struct qla_percpu_qp_hint); ha->wq = alloc_workqueue("qla2xxx_wq", WQ_MEM_RECLAIM, 1);