linux/drivers/target
Nicholas Bellinger f85eda8d75 target: Fix RESERVATION_CONFLICT status regression for iscsi-target special case
This patch fixes a regression introduced in v3.8-rc1 code where a failed
target_check_reservation() check in target_setup_cmd_from_cdb() was causing
an incorrect SAM_STAT_GOOD status to be returned during a WRITE operation
performed by an unregistered / unreserved iscsi initiator port.

This regression is only effecting iscsi-target due to a special case check
for TCM_RESERVATION_CONFLICT within iscsi_target_erl1.c:iscsit_execute_cmd(),
and was still correctly disallowing WRITE commands from backend submission
for unregistered / unreserved initiator ports, while returning the incorrect
SAM_STAT_GOOD status due to the missing SAM_STAT_RESERVATION_CONFLICT
assignment.

This regression was first introduced with:

commit de103c93af
Author: Christoph Hellwig <hch@lst.de>
Date:   Tue Nov 6 12:24:09 2012 -0800

    target: pass sense_reason as a return value

Go ahead and re-add the missing SAM_STAT_RESERVATION_CONFLICT assignment
during a target_check_reservation() failure, so that iscsi-target code
sends the correct SCSI status.

All other fabrics using target_submit_cmd_*() with a RESERVATION_CONFLICT
call to transport_generic_request_failure() are not effected by this bug.

Reported-by: Jeff Leung <jleung@curriegrad2004.ca>
Cc: Christoph Hellwig <hch@lst.de>
Cc: <stable@vger.kernel.org>
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
2013-03-28 23:42:47 -07:00
..
iscsi target/iscsi: Fix mutual CHAP auth on big-endian arches 2013-03-18 12:31:21 -07:00
loopback
sbp Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending 2013-03-02 11:43:27 -08:00
tcm_fc hlist: drop the node parameter from iterators 2013-02-27 19:10:24 -08:00
Kconfig
Makefile
target_core_alua.c target: writev() on single-element vector is pointless 2013-02-26 02:46:11 -05:00
target_core_alua.h
target_core_configfs.c target: Add device attribute to expose config_item_name for INQUIRY model 2013-02-13 11:27:58 -08:00
target_core_device.c target: Fix lookup of dynamic NodeACLs during cached demo-mode operation 2013-02-18 18:47:20 -08:00
target_core_fabric_configfs.c target: Add missing mapped_lun bounds checking during make_mappedlun setup 2013-02-18 18:47:28 -08:00
target_core_fabric_lib.c target: Update copyright information to 2012 2012-11-27 22:47:02 -08:00
target_core_file.c Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending 2013-03-02 11:43:27 -08:00
target_core_file.h target/file: Bump FD_MAX_SECTORS to 2048 to handle 1M sized I/Os 2013-03-19 17:24:28 -07:00
target_core_hba.c target: Update copyright information to 2012 2012-11-27 22:47:02 -08:00
target_core_iblock.c target: Add __exit annotation for module_exit functions 2013-02-27 19:12:10 -08:00
target_core_iblock.h
target_core_internal.h target: Fix lookup of dynamic NodeACLs during cached demo-mode operation 2013-02-18 18:47:20 -08:00
target_core_pr.c target: writev() on single-element vector is pointless 2013-02-26 02:46:11 -05:00
target_core_pr.h
target_core_pscsi.c target/pscsi: Reject cross page boundary case in pscsi_map_sg 2013-03-19 17:31:14 -07:00
target_core_pscsi.h
target_core_rd.c target_core_rd: break out unterminated loop during copy 2013-02-13 11:54:29 -08:00
target_core_rd.h
target_core_sbc.c target_core_sbc: use noop for SYNCHRONIZE_CACHE 2013-03-18 12:31:16 -07:00
target_core_spc.c target: Fix parameter list length checking in MODE SELECT 2013-02-13 12:16:11 -08:00
target_core_stat.c target: Update copyright information to 2012 2012-11-27 22:47:02 -08:00
target_core_tmr.c target: Remove useless if statement 2013-02-13 11:27:22 -08:00
target_core_tpg.c target: fix possible memory leak in core_tpg_register() 2013-03-18 12:45:52 -07:00
target_core_transport.c target: Fix RESERVATION_CONFLICT status regression for iscsi-target special case 2013-03-28 23:42:47 -07:00
target_core_ua.c target: Update copyright information to 2012 2012-11-27 22:47:02 -08:00
target_core_ua.h