summaryrefslogtreecommitdiffstats
path: root/drivers/scsi/lpfc/lpfc_nvme.h
diff options
context:
space:
mode:
authorJames Smart2018-08-01 02:23:21 +0200
committerMartin K. Petersen2018-08-02 21:45:19 +0200
commit93a3922da428ec0752e8b2ab00c42dadbbf805a9 (patch)
tree4a47407bd16b2372611fff436fef46f8ee54f935 /drivers/scsi/lpfc/lpfc_nvme.h
parentscsi: lpfc: Fix list corruption on the completion queue. (diff)
downloadkernel-qcow2-linux-93a3922da428ec0752e8b2ab00c42dadbbf805a9.tar.gz
kernel-qcow2-linux-93a3922da428ec0752e8b2ab00c42dadbbf805a9.tar.xz
kernel-qcow2-linux-93a3922da428ec0752e8b2ab00c42dadbbf805a9.zip
scsi: lpfc: Fix driver crash when re-registering NVME rports.
During remote port loss fault testing, the driver crashed with the following trace: general protection fault: 0000 [#1] SMP RIP: ... lpfc_nvme_register_port+0x250/0x480 [lpfc] Call Trace: lpfc_nlp_state_cleanup+0x1b3/0x7a0 [lpfc] lpfc_nlp_set_state+0xa6/0x1d0 [lpfc] lpfc_cmpl_prli_prli_issue+0x213/0x440 lpfc_disc_state_machine+0x7e/0x1e0 [lpfc] lpfc_cmpl_els_prli+0x18a/0x200 [lpfc] lpfc_sli_sp_handle_rspiocb+0x3b5/0x6f0 [lpfc] lpfc_sli_handle_slow_ring_event_s4+0x161/0x240 [lpfc] lpfc_work_done+0x948/0x14c0 [lpfc] lpfc_do_work+0x16f/0x180 [lpfc] kthread+0xc9/0xe0 ret_from_fork+0x55/0x80 After registering a new remoteport, the driver is pulling an ndlp pointer from the lpfc rport associated with the private area of a newly registered remoteport. The private area is uninitialized, so it's garbage. Correct by pulling the the lpfc rport pointer from the entering ndlp point, then ndlp value from at rport. Note the entering ndlp may be replacing by the rport->ndlp due to an address change swap. Signed-off-by: Dick Kennedy <dick.kennedy@broadcom.com> Signed-off-by: James Smart <james.smart@broadcom.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Diffstat (limited to 'drivers/scsi/lpfc/lpfc_nvme.h')
0 files changed, 0 insertions, 0 deletions