aboutsummaryrefslogtreecommitdiffstats
path: root/include/target
diff options
context:
space:
mode:
authorNicholas Bellinger <nab@linux-iscsi.org>2017-09-29 16:03:24 -0700
committerNicholas Bellinger <nab@linux-iscsi.org>2017-11-07 19:43:55 -0800
commitfd2f928b0ddd2fe8876d4f1344df2ace2b715a4d (patch)
tree8f7b0b40eaeb20a6eb2bddb6a1f6a705198f543a /include/target
parenttarget: Fix QUEUE_FULL + SCSI task attribute handling (diff)
downloadlinux-dev-fd2f928b0ddd2fe8876d4f1344df2ace2b715a4d.tar.xz
linux-dev-fd2f928b0ddd2fe8876d4f1344df2ace2b715a4d.zip
target: Fix caw_sem leak in transport_generic_request_failure
With the recent addition of transport_check_aborted_status() within transport_generic_request_failure() to avoid sending a SCSI status exception after CMD_T_ABORTED w/ TAS=1 has occured, it introduced a COMPARE_AND_WRITE early failure regression. Namely when COMPARE_AND_WRITE fails and se_device->caw_sem has been taken by sbc_compare_and_write(), if the new check for transport_check_aborted_status() returns true and exits, cmd->transport_complete_callback() -> compare_and_write_post() is skipped never releasing se_device->caw_sem. This regression was originally introduced by: commit e3b88ee95b4e4bf3e9729a4695d695b9c7c296c8 Author: Bart Van Assche <bart.vanassche@sandisk.com> Date: Tue Feb 14 16:25:45 2017 -0800 target: Fix handling of aborted failed commands To address this bug, move the transport_check_aborted_status() call after transport_complete_task_attr() and cmd->transport_complete_callback(). Cc: Mike Christie <mchristi@redhat.com> Cc: Hannes Reinecke <hare@suse.com> Cc: Bart Van Assche <bart.vanassche@sandisk.com> Cc: stable@vger.kernel.org # 4.11+ Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
Diffstat (limited to 'include/target')
0 files changed, 0 insertions, 0 deletions