linux/drivers/target
Jiang Yi 1d6ef27659 target: Fix COMPARE_AND_WRITE caw_sem leak during se_cmd quiesce
This patch addresses a COMPARE_AND_WRITE se_device->caw_sem leak,
that would be triggered during normal se_cmd shutdown or abort
via __transport_wait_for_tasks().

This would occur because target_complete_cmd() would catch this
early and do complete_all(&cmd->t_transport_stop_comp), but since
target_complete_ok_work() or target_complete_failure_work() are
never called to invoke se_cmd->transport_complete_callback(),
the COMPARE_AND_WRITE specific callbacks never release caw_sem.

To address this special case, go ahead and release caw_sem
directly from target_complete_cmd().

(Remove '&& success' from check, to release caw_sem regardless
 of scsi_status - nab)

Signed-off-by: Jiang Yi <jiangyilism@gmail.com>
Cc: <stable@vger.kernel.org> # 3.14+
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
2017-07-06 23:11:32 -07:00
..
iscsi target/iscsi: Remove dead code from iscsit_process_scsi_cmd() 2017-07-06 23:11:28 -07:00
loopback target/tcm_loop: Make TMF processing slightly faster 2017-07-06 23:11:25 -07:00
sbp sbp-target: Add an #include directive 2016-12-09 10:20:10 -08:00
tcm_fc Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending 2017-03-02 14:52:05 -08:00
Kconfig block: make scsi_request and scsi ioctl support optional 2017-01-31 10:53:05 -07:00
Makefile target: Put TCMU under a new config option 2015-04-19 22:41:12 -07:00
target_core_alua.c target: Use {get,put}_unaligned_be*() instead of open coding these functions 2017-07-06 22:57:59 -07:00
target_core_alua.h target: Minimize #include directives 2016-12-09 10:22:28 -08:00
target_core_configfs.c target/configfs: Kill se_device->dev_link_magic 2017-06-08 23:26:38 -07:00
target_core_device.c target: Use {get,put}_unaligned_be*() instead of open coding these functions 2017-07-06 22:57:59 -07:00
target_core_fabric_configfs.c target/configfs: Kill se_lun->lun_link_magic 2017-06-08 23:26:38 -07:00
target_core_fabric_lib.c target: Use {get,put}_unaligned_be*() instead of open coding these functions 2017-07-06 22:57:59 -07:00
target_core_file.c target/fileio: Fix zero-length READ and WRITE handling 2017-05-07 16:05:16 -07:00
target_core_file.h target: Minimize #include directives 2016-12-09 10:22:28 -08:00
target_core_hba.c target: Fix target_sense_desc_format NULL pointer dereference 2015-09-24 23:17:23 -07:00
target_core_iblock.c target/iblock: Convert WRITE_SAME to blkdev_issue_zeroout 2017-06-08 23:26:37 -07:00
target_core_iblock.h target/iblock: convert iblock_req.pending from atomic_t to refcount_t 2017-05-01 22:20:43 -07:00
target_core_internal.h target: Fix kref->refcount underflow in transport_cmd_finish_abort 2017-06-08 22:24:18 -07:00
target_core_pr.c target: Use {get,put}_unaligned_be*() instead of open coding these functions 2017-07-06 22:57:59 -07:00
target_core_pr.h target/pr: update PR out action code table 2017-05-01 22:20:44 -07:00
target_core_pscsi.c target: Use {get,put}_unaligned_be*() instead of open coding these functions 2017-07-06 22:57:59 -07:00
target_core_pscsi.h target: Minimize #include directives 2016-12-09 10:22:28 -08:00
target_core_rd.c target: remove dead code 2017-06-08 23:26:37 -07:00
target_core_rd.h target: Minimize #include directives 2016-12-09 10:22:28 -08:00
target_core_sbc.c target: Use {get,put}_unaligned_be*() instead of open coding these functions 2017-07-06 22:57:59 -07:00
target_core_spc.c target: Use {get,put}_unaligned_be*() instead of open coding these functions 2017-07-06 22:57:59 -07:00
target_core_stat.c target: Add counters for ABORT_TASK success + failure 2017-02-26 16:21:06 -08:00
target_core_tmr.c target: Introduce a function that shows the command state 2017-07-06 22:58:04 -07:00
target_core_tpg.c target/configfs: Kill se_lun->lun_link_magic 2017-06-08 23:26:38 -07:00
target_core_transport.c target: Fix COMPARE_AND_WRITE caw_sem leak during se_cmd quiesce 2017-07-06 23:11:32 -07:00
target_core_ua.c Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending 2015-07-04 14:13:43 -07:00
target_core_ua.h target: Minimize #include directives 2016-12-09 10:22:28 -08:00
target_core_user.c tcmu: Add Type of reconfig into netlink 2017-07-06 23:11:32 -07:00
target_core_xcopy.c target: Fix a deadlock between the XCOPY code and iSCSI session shutdown 2017-07-06 22:58:00 -07:00
target_core_xcopy.h target: check for XCOPY parameter truncation 2017-01-10 08:41:27 -08:00