aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/target/iscsi
diff options
context:
space:
mode:
authorLee Duncan <lduncan@suse.com>2020-11-06 11:33:17 -0800
committerMartin K. Petersen <martin.petersen@oracle.com>2020-11-16 22:32:50 -0500
commitfe0a8a95e7134d0b44cd407bc0085b9ba8d8fe31 (patch)
treedb4b4dc891d17476e89cc1b9194406a9bd325357 /drivers/target/iscsi
parentscsi: ufshcd: Fix missing destroy_workqueue() (diff)
downloadlinux-dev-fe0a8a95e7134d0b44cd407bc0085b9ba8d8fe31.tar.xz
linux-dev-fe0a8a95e7134d0b44cd407bc0085b9ba8d8fe31.zip
scsi: libiscsi: Fix NOP race condition
iSCSI NOPs are sometimes "lost", mistakenly sent to the user-land iscsid daemon instead of handled in the kernel, as they should be, resulting in a message from the daemon like: iscsid: Got nop in, but kernel supports nop handling. This can occur because of the new forward- and back-locks, and the fact that an iSCSI NOP response can occur before processing of the NOP send is complete. This can result in "conn->ping_task" being NULL in iscsi_nop_out_rsp(), when the pointer is actually in the process of being set. To work around this, we add a new state to the "ping_task" pointer. In addition to NULL (not assigned) and a pointer (assigned), we add the state "being set", which is signaled with an INVALID pointer (using "-1"). Link: https://lore.kernel.org/r/20201106193317.16993-1-leeman.duncan@gmail.com Reviewed-by: Mike Christie <michael.christie@oracle.com> Signed-off-by: Lee Duncan <lduncan@suse.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Diffstat (limited to 'drivers/target/iscsi')
0 files changed, 0 insertions, 0 deletions