linux/drivers/scsi
James Smart 7b08e89f98 scsi: lpfc: Fix FLOGI/PLOGI receive race condition in pt2pt discovery
The driver is unable to successfully login with remote device. During pt2pt
login, the driver completes its FLOGI request with the remote device having
WWN precedence.  The remote device issues its own (delayed) FLOGI after
accepting the driver's and, upon transmitting the FLOGI, immediately
recognizes it has already processed the driver's FLOGI thus it transitions
to sending a PLOGI before waiting for an ACC to its FLOGI.

In the driver, the FLOGI is received and an ACC sent, followed by the PLOGI
being received and an ACC sent. The issue is that the PLOGI reception
occurs before the response from the adapter from the FLOGI ACC is
received. Processing of the PLOGI sets state flags to perform the REG_RPI
mailbox command and proceed with the rest of discovery on the port. The
same completion routine used by both FLOGI and PLOGI is generic in
nature. One of the things it does is clear flags, and those flags happen to
drive the rest of discovery.  So what happened was the PLOGI processing set
the flags, the FLOGI ACC completion cleared them, thus when the PLOGI ACC
completes it doesn't see the flags and stops.

Fix by modifying the generic completion routine to not clear the rest of
discovery flag (NLP_ACC_REGLOGIN) unless the completion is also associated
with performing a mailbox command as part of its handling.  For things such
as FLOGI ACC, there isn't a subsequent action to perform with the adapter,
thus there is no mailbox cmd ptr. PLOGI ACC though will perform REG_RPI
upon completion, thus there is a mailbox cmd ptr.

Link: https://lore.kernel.org/r/20200828175332.130300-3-james.smart@broadcom.com
Co-developed-by: Dick Kennedy <dick.kennedy@broadcom.com>
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>
2020-08-31 21:51:26 -04:00
..
aacraid pci-v5.9-changes 2020-08-07 18:48:15 -07:00
aic7xxx scsi: aic7xxx: Remove set but unused variables 'targ_info' and 'value' 2020-07-24 22:09:59 -04:00
aic94xx SCSI misc on 20200806 2020-08-06 16:50:07 -07:00
arcmsr scsi: arcmsr: arcmsr_hba: Remove statement with no effect 2020-07-24 22:09:57 -04:00
arm scsi: eesox: Fix different dev_id between request_irq() and free_irq() 2020-07-02 23:53:44 -04:00
be2iscsi scsi: be2iscsi: Correct misdocumentation of function param 'ep' 2020-07-24 22:32:10 -04:00
bfa scsi: bfa: Ensure a blank line precedes next function/header 2020-07-24 22:33:06 -04:00
bnx2fc scsi: bnx2fc: Demote obvious misuse of kerneldoc to standard comment blocks 2020-07-15 16:01:58 -04:00
bnx2i scsi: bnx2i: Add parameter description and rename another 2020-07-24 22:33:07 -04:00
csiostor scsi: csiostor: Add missing description for csio_rnode_fwevt_handler()'s 'fwevt' param 2020-07-24 22:32:07 -04:00
cxgbi scsi: libcxgbi: Fix a use after free in cxgbi_conn_xmit_pdu() 2020-08-24 23:00:57 -04:00
cxlflash scsi: cxlflash: Remove an unnecessary NULL check 2020-06-09 21:57:27 -04:00
device_handler SCSI fixes on 20191101 2019-11-07 06:43:18 -07:00
dpt scsi: docs: convert dpti.txt to ReST 2020-03-11 23:07:59 -04:00
esas2r scsi: esas2r: Demote a few non-conformant kerneldoc headers 2020-07-24 22:33:07 -04:00
fcoe scsi: fcoe: Memory leak fix in fcoe_sysfs_fcf_del() 2020-08-04 20:56:56 -04:00
fnic scsi: fnic: Use eth_broadcast_addr() to assign broadcast address 2020-07-24 22:09:56 -04:00
hisi_sas SCSI misc on 20200806 2020-08-06 16:50:07 -07:00
ibmvscsi scsi: Fix trivial spelling 2020-06-15 23:28:04 -04:00
ibmvscsi_tgt scsi: ibmvscsi_tgt: remove set but not used variables 'iue' and 'sd' 2019-12-19 22:08:54 -05:00
isci SCSI misc on 20200806 2020-08-06 16:50:07 -07:00
libfc scsi: libfc: Fix for double free() 2020-08-31 21:42:51 -04:00
libsas scsi: libsas: Remove redundant assignment to variable res 2020-07-24 22:09:56 -04:00
lpfc scsi: lpfc: Fix FLOGI/PLOGI receive race condition in pt2pt discovery 2020-08-31 21:51:26 -04:00
megaraid SCSI misc on 20200806 2020-08-06 16:50:07 -07:00
mpt3sas SCSI misc on 20200806 2020-08-06 16:50:07 -07:00
mvsas SCSI misc on 20200806 2020-08-06 16:50:07 -07:00
pcmcia scsi: pcmcia: nsp_cs: Remove unused variable 'dummy' 2020-07-08 01:12:54 -04:00
pm8001 scsi: pm8001: Fix memleak in pm8001_exec_internal_task_abort 2020-08-31 21:21:01 -04:00
qedf scsi: qedf: Fix null ptr reference in qedf_stag_change_work 2020-08-24 22:58:38 -04:00
qedi scsi: qedi: Staticify non-external function 'qedi_get_iscsi_error' 2020-07-24 22:33:05 -04:00
qla2xxx scsi: qla2xxx: Fix regression on sparc64 2020-08-31 21:43:12 -04:00
qla4xxx scsi: qla4xxx: Rename function parameter descriptions 2020-07-24 22:32:02 -04:00
smartpqi PCI: Convert PCIe capability PCIBIOS errors to errno 2020-06-26 13:50:09 -05:00
snic scsi: snic: Make snic_io_exch_ver_cmpl_handler() return void 2020-04-24 18:21:15 -04:00
sym53c8xx_2 pci-v5.9-changes 2020-08-07 18:48:15 -07:00
ufs scsi: ufs: No need to send Abort Task if the task in DB was cleared 2020-08-17 22:09:14 -04:00
.gitignore .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
3w-9xxx.c
3w-9xxx.h
3w-sas.c
3w-sas.h
3w-xxxx.c compat_ioctl: move more drivers to compat_ptr_ioctl 2019-10-23 17:23:44 +02:00
3w-xxxx.h
53c700_d.h_shipped
53c700.c mm: reorder includes after introduction of linux/pgtable.h 2020-06-09 09:39:13 -07:00
53c700.h
53c700.scr
a100u2w.c
a100u2w.h
a2091.c mm: don't include asm/pgtable.h if linux/mm.h is already included 2020-06-09 09:39:13 -07:00
a2091.h
a3000.c mm: don't include asm/pgtable.h if linux/mm.h is already included 2020-06-09 09:39:13 -07:00
a3000.h
a4000t.c
advansys.c scsi: advansys: Replace zero-length array with flexible-array member 2020-02-18 00:39:54 -05:00
aha152x.c scsi: aha152x: Remove unused variable 'ret' 2020-07-08 01:12:53 -04:00
aha152x.h
aha1542.c
aha1542.h
aha1740.c scsi: aha1740: Fix an errro handling path in aha1740_probe() 2020-03-26 21:10:53 -04:00
aha1740.h
am53c974.c
atari_scsi.c scsi: atari_scsi: sun3_scsi: Set sg_tablesize to 1 instead of SG_NONE 2019-11-12 22:21:34 -05:00
atp870u.c scsi: core: Clean up SG_NONE 2019-11-12 22:21:35 -05:00
atp870u.h
BusLogic.c scsi: BusLogic: Remove conversion to bool in blogic_inquiry() 2020-04-24 18:21:14 -04:00
BusLogic.h
bvme6000_scsi.c
ch.c scsi: ch: remove ch_mutex() 2020-02-24 14:54:25 -05:00
constants.c scsi: core: Add DID_ALLOC_FAILURE and DID_MEDIUM_ERROR to hostbyte_table 2020-04-01 22:03:04 -04:00
dc395x.c treewide: Remove uninitialized_var() usage 2020-07-16 12:35:15 -07:00
dc395x.h
dmx3191d.c
dpt_i2o.c scsi: dpt_i2o: Remove superfluous memset() 2020-07-24 22:09:57 -04:00
dpti.h scsi: docs: convert dpti.txt to ReST 2020-03-11 23:07:59 -04:00
esp_scsi.c scsi: esp_scsi: Add support for FSC chip 2019-12-19 22:08:51 -05:00
esp_scsi.h scsi: esp_scsi: Add support for FSC chip 2019-12-19 22:08:51 -05:00
fdomain_isa.c scsi: fdomain_isa: use CFG1_IRQ_MASK 2019-07-30 12:18:24 -04:00
fdomain_pci.c
fdomain.c scsi: fdomain: use BSTAT_{MSG|CMD|IO} in fdomain_work() 2019-07-30 12:17:28 -04:00
fdomain.h scsi: fdomain: Mark 'fdomain_pm_ops' as __maybe_unused 2020-07-08 01:12:44 -04:00
FlashPoint.c
g_NCR5380.c scsi: docs: convert g_NCR5380.txt to ReST 2020-03-11 23:08:00 -04:00
gdth_ioctl.h
gdth_proc.c scsi: gdth: Use scnprintf() for avoiding potential buffer overflow 2020-03-17 13:36:10 -04:00
gdth_proc.h
gdth.c scsi: gdth: Make __gdth_execute static 2020-04-14 21:32:39 -04:00
gdth.h
gvp11.c mm: don't include asm/pgtable.h if linux/mm.h is already included 2020-06-09 09:39:13 -07:00
gvp11.h
hosts.c scsi: core: Register sysfs for SCSI workqueue 2020-07-02 23:17:05 -04:00
hpsa_cmd.h SCSI misc on 20190709 2019-07-11 15:14:01 -07:00
hpsa.c scsi: hpsa: Correct ctrl queue depth 2020-07-28 22:34:52 -04:00
hpsa.h scsi: hpsa: Increase queue depth for external LUNs 2020-07-24 22:09:53 -04:00
hptiop.c
hptiop.h
imm.c scsi: imm: Remove superfluous breaks 2020-07-24 22:09:55 -04:00
imm.h
initio.c scsi: initio: make initio_state_7() static 2019-12-19 22:08:54 -05:00
initio.h
ipr.c SCSI misc on 20200806 2020-08-06 16:50:07 -07:00
ipr.h scsi: ipr: Fix struct packed-not-aligned issues 2020-07-15 17:26:58 -04:00
ips.c scsi: ips: Convert strnlen() to memcpy() since result should not be NUL terminated 2020-07-24 22:32:00 -04:00
ips.h
iscsi_boot_sysfs.c scsi: iscsi: Fix reference count leak in iscsi_boot_create_kobj 2020-06-02 21:23:47 -04:00
iscsi_tcp.c scsi: iscsi: Don't destroy session if there are outstanding connections 2020-01-15 22:48:34 -05:00
iscsi_tcp.h
jazz_esp.c
Kconfig scsi: lpfc: Add dependency on CPU_FREQ 2020-07-24 22:09:55 -04:00
lasi700.c mm: don't include asm/pgtable.h if linux/mm.h is already included 2020-06-09 09:39:13 -07:00
libiscsi_tcp.c SCSI misc on 20190709 2019-07-11 15:14:01 -07:00
libiscsi.c scsi: iscsi: Change iSCSI workqueue max_active back to 1 2020-07-02 23:13:54 -04:00
mac53c94.c mm: reorder includes after introduction of linux/pgtable.h 2020-06-09 09:39:13 -07:00
mac53c94.h
mac_esp.c
mac_scsi.c scsi: atari_scsi: sun3_scsi: Set sg_tablesize to 1 instead of SG_NONE 2019-11-12 22:21:34 -05:00
Makefile scsi: remove pointless $(MODVERDIR)/$(obj)/53c700.ver 2019-07-17 22:39:27 +09:00
megaraid.c scsi: megaraid: Remove set but unused variable 2020-07-08 01:03:23 -04:00
megaraid.h
mesh.c scsi: mesh: Fix panic after host or bus reset 2020-07-24 22:09:56 -04:00
mesh.h
mvme16x_scsi.c
mvme147.c mm: don't include asm/pgtable.h if linux/mm.h is already included 2020-06-09 09:39:13 -07:00
mvme147.h
mvumi.c SCSI sg on 20190709 2019-07-11 15:17:41 -07:00
mvumi.h scsi: Replace zero-length array with flexible-array member 2020-03-11 23:07:56 -04:00
myrb.c remove ioremap_nocache and devm_ioremap_nocache 2020-01-06 09:45:59 +01:00
myrb.h scsi: mylex: Use the correct style for SPDX License Identifier 2020-01-02 21:57:44 -05:00
myrs.c scsi: myrs: Demote obvious misuse of kerneldoc to standard comment blocks 2020-07-15 17:26:59 -04:00
myrs.h scsi: mylex: Use the correct style for SPDX License Identifier 2020-01-02 21:57:44 -05:00
ncr53c8xx.c scsi: docs: convert ncr53c8xx.txt to ReST 2020-03-11 23:08:01 -04:00
ncr53c8xx.h
NCR5380.c scsi: NCR5380: Add disconnect_mask module parameter 2019-11-19 21:37:34 -05:00
NCR5380.h
nsp32_debug.c
nsp32_io.h
nsp32.c scsi: Fix various misspellings of "connect" 2019-10-24 21:22:32 -04:00
nsp32.h
pmcraid.c scsi: pmcraid: Replace dma_pool_malloc with dma_pool_zalloc 2020-04-24 18:21:15 -04:00
pmcraid.h scsi: Replace zero-length array with flexible-array member 2020-03-11 23:07:56 -04:00
ppa.c scsi: ppa: Remove superfluous breaks 2020-07-24 22:09:55 -04:00
ppa.h
ps3rom.c
qla1280.c scsi: qla1280: make qla1280_firmware_mutex and qla1280_fw_tbl static 2020-04-14 21:42:10 -04:00
qla1280.h scsi: qla1280: Fix dma firmware download, if dma address is 64bit 2020-01-15 23:09:11 -05:00
qlogicfas408.c
qlogicfas408.h
qlogicfas.c
qlogicpti.c mm: reorder includes after introduction of linux/pgtable.h 2020-06-09 09:39:13 -07:00
qlogicpti.h
raid_class.c
script_asm.pl
scsi_common.c
scsi_debug.c scsi: scsi_debug: Remove superfluous close zone in resp_open_zone() 2020-08-24 23:02:18 -04:00
scsi_debugfs.c scsi: scsi_debugfs: Use for_each_set_bit to simplify code 2019-07-30 12:42:55 -04:00
scsi_debugfs.h
scsi_devinfo.c scsi: dh: Add Fujitsu device to devinfo and dh lists 2020-07-08 01:16:23 -04:00
scsi_dh.c scsi: dh: Add Fujitsu device to devinfo and dh lists 2020-07-08 01:16:23 -04:00
scsi_error.c scsi: core: Fix incorrect usage of shost_for_each_device 2020-05-19 21:54:17 -04:00
scsi_ioctl.c scsi_ioctl.c: switch SCSI_IOCTL_GET_IDLUN to copy_to_user() 2020-04-25 18:06:39 -04:00
scsi_lib_dma.c
scsi_lib.c SCSI misc on 20200806 2020-08-06 16:50:07 -07:00
scsi_logging.c scsi: core: Delete unnecessary buffer allocation for every loop iteration 2020-07-24 22:09:57 -04:00
scsi_logging.h scsi: core: Fix a compiler warning triggered by the SCSI logging code 2019-12-19 22:08:54 -05:00
scsi_netlink.c
scsi_pm.c scsi: block: pm: Simplify resume handling 2020-07-24 22:09:55 -04:00
scsi_priv.h scsi: core: Remove scsi_sdb_cache 2020-06-19 23:06:43 -04:00
scsi_proc.c proc: convert everything to "struct proc_ops" 2020-02-04 03:05:26 +00:00
scsi_sas_internal.h
scsi_scan.c scsi: core: Remove cmd_list functionality 2020-02-28 20:54:55 -05:00
scsi_sysctl.c
scsi_sysfs.c scsi: core: Use scnprintf() for avoiding potential buffer overflow 2020-03-17 13:36:12 -04:00
scsi_trace.c scsi: scsi_trace: Use get_unaligned_be24() 2020-03-16 22:08:36 -04:00
scsi_transport_api.h
scsi_transport_fc.c SCSI misc on 20190709 2019-07-11 15:14:01 -07:00
scsi_transport_iscsi.c SCSI misc on 20200806 2020-08-06 16:50:07 -07:00
scsi_transport_sas.c scsi: scsi_transport_sas: Add spaces around binary operator "|" 2020-08-04 20:56:56 -04:00
scsi_transport_spi.c scsi: scsi_transport_spi: Fix function pointer check 2020-06-29 21:34:35 -04:00
scsi_transport_srp.c scsi: scsi_transport_srp: Sanitize scsi_target_block/unblock sequences 2020-07-30 21:15:26 -04:00
scsi.c scsi: core: Remove scsi_sdb_cache 2020-06-19 23:06:43 -04:00
scsi.h
scsicam.c block: move struct partition out of genhd.h 2020-03-24 07:57:08 -06:00
sd_dif.c
sd_zbc.c SCSI misc on 20200814 2020-08-14 16:01:59 -07:00
sd.c scsi: sd_zbc: Improve zone revalidation 2020-08-04 20:56:56 -04:00
sd.h scsi: sd_zbc: Improve zone revalidation 2020-08-04 20:56:56 -04:00
sense_codes.h
ses.c SCSI misc on 20190709 2019-07-11 15:14:01 -07:00
sg.c scsi: sg: add sg_remove_request in sg_write 2020-04-14 21:15:53 -04:00
sgiwd93.c scsi: sgiwd93: Remove unneeded semicolon in sgiwd93.c 2020-04-24 18:21:29 -04:00
sim710.c
sni_53c710.c mm: don't include asm/pgtable.h if linux/mm.h is already included 2020-06-09 09:39:13 -07:00
sr_ioctl.c
sr_vendor.c scsi: sr: remove references to BLK_DEV_SR_VENDOR, leave it enabled 2020-02-24 14:59:01 -05:00
sr.c SCSI misc on 20200613 2020-06-13 13:17:49 -07:00
sr.h scsi: sr: get rid of sr global mutex 2020-02-24 15:01:57 -05:00
st_options.h
st.c scsi: st: Convert convert get_user_pages() --> pin_user_pages() 2020-06-09 21:57:26 -04:00
st.h
stex.c scsi: Replace zero-length array with flexible-array member 2020-03-11 23:07:56 -04:00
storvsc_drv.c SCSI misc on 20200806 2020-08-06 16:50:07 -07:00
sun3_scsi_vme.c
sun3_scsi.c scsi: atari_scsi: sun3_scsi: Set sg_tablesize to 1 instead of SG_NONE 2019-11-12 22:21:34 -05:00
sun3x_esp.c remove ioremap_nocache and devm_ioremap_nocache 2020-01-06 09:45:59 +01:00
sun_esp.c
virtio_scsi.c virtio: fixes, features 2020-08-11 14:34:17 -07:00
vmw_pvscsi.c scsi: vmw_pvscsi: Use true, false for adapter->use_msg 2020-05-07 22:03:54 -04:00
vmw_pvscsi.h
wd33c93.c scsi: wd33c93: Mark expected switch fall-through 2019-08-07 21:35:59 -04:00
wd33c93.h
wd719x.c SCSI misc on 20190709 2019-07-11 15:14:01 -07:00
wd719x.h
xen-scsifront.c
zalon.c remove ioremap_nocache and devm_ioremap_nocache 2020-01-06 09:45:59 +01:00
zorro7xx.c
zorro_esp.c mm: reorder includes after introduction of linux/pgtable.h 2020-06-09 09:39:13 -07:00