linux_old1/drivers/target
Nicholas Bellinger d8855c154e target: Fix recursive COMPARE_AND_WRITE callback failure
This patch addresses a bug when compare_and_write_callback() invoked from
target_complete_ok_work() hits an failure from __target_execute_cmd() ->
cmd->execute_cmd(), that ends up calling transport_generic_request_failure()
-> compare_and_write_post(), thus causing SCF_COMPARE_AND_WRITE_POST to
incorrectly be set.

The result of this bug is that target_complete_ok_work() no longer hits
the if (!rc && !(cmd->se_cmd_flags & SCF_COMPARE_AND_WRITE_POST) check
that forces an immediate return, and instead double completes the se_cmd
in question, triggering an OOPs in the process.

This patch changes compare_and_write_post() to only set this bit when a
failure has not already occured to ensure the immediate return from within
target_complete_ok_work(), and thus allow transport_generic_request_failure()
to handle the sending of the CHECK_CONDITION exception status.

Reported-by: Thomas Glanzmann <thomas@glanzmann.de>
Tested-by: Thomas Glanzmann <thomas@glanzmann.de>
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
2013-10-03 04:24:06 -07:00
..
iscsi Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending 2013-09-12 16:11:45 -07:00
loopback target: Update copyright ownership/year information to 2013 2013-09-10 20:23:36 -07:00
sbp target: make queue_tm_rsp() return void 2013-07-07 18:36:53 -07:00
tcm_fc target: replace strict_strto*() with kstrto*() 2013-08-12 20:31:44 -07:00
Kconfig sbp-target: Initial merge of firewire/ieee-1394 target mode support 2012-05-09 15:25:17 -07:00
Makefile target: Add support for EXTENDED_COPY copy offload emulation 2013-09-10 16:48:43 -07:00
target_core_alua.c target: Update copyright ownership/year information to 2013 2013-09-10 20:23:36 -07:00
target_core_alua.h target: pass sense_reason as a return value 2012-11-06 20:55:46 -08:00
target_core_configfs.c target: Update copyright ownership/year information to 2013 2013-09-10 20:23:36 -07:00
target_core_device.c target: Update copyright ownership/year information to 2013 2013-09-10 20:23:36 -07:00
target_core_fabric_configfs.c target: Update copyright ownership/year information to 2013 2013-09-10 20:23:36 -07:00
target_core_fabric_lib.c target: Update copyright ownership/year information to 2013 2013-09-10 20:23:36 -07:00
target_core_file.c target: Update copyright ownership/year information to 2013 2013-09-10 20:23:36 -07: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 ownership/year information to 2013 2013-09-10 20:23:36 -07:00
target_core_iblock.c target: Update copyright ownership/year information to 2013 2013-09-10 20:23:36 -07:00
target_core_iblock.h target: kill struct se_subsystem_dev 2012-11-06 20:55:43 -08:00
target_core_internal.h target: Add Third Party Copy (3PC) bit in INQUIRY response 2013-09-10 16:48:46 -07:00
target_core_pr.c target: Update copyright ownership/year information to 2013 2013-09-10 20:23:36 -07:00
target_core_pr.h target: Alter core_pr_dump_initiator_port for ease of use 2013-06-14 00:04:31 -07:00
target_core_pscsi.c target: Update copyright ownership/year information to 2013 2013-09-10 20:23:36 -07:00
target_core_pscsi.h target: kill struct se_subsystem_dev 2012-11-06 20:55:43 -08:00
target_core_rd.c target: Update copyright ownership/year information to 2013 2013-09-10 20:23:36 -07:00
target_core_rd.h target/rd: Add ramdisk bit for NULLIO operation 2013-05-11 16:22:39 -07:00
target_core_sbc.c target: Fix recursive COMPARE_AND_WRITE callback failure 2013-10-03 04:24:06 -07:00
target_core_spc.c Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending 2013-09-12 16:11:45 -07:00
target_core_stat.c target: Update copyright ownership/year information to 2013 2013-09-10 20:23:36 -07:00
target_core_tmr.c target: Update copyright ownership/year information to 2013 2013-09-10 20:23:36 -07:00
target_core_tpg.c target: Update copyright ownership/year information to 2013 2013-09-10 20:23:36 -07:00
target_core_transport.c target: Fall back to vzalloc upon ->sess_cmd_map kzalloc failure 2013-10-01 21:27:31 -07:00
target_core_ua.c target: Update copyright ownership/year information to 2013 2013-09-10 20:23:36 -07:00
target_core_ua.h target: pass sense_reason as a return value 2012-11-06 20:55:46 -08:00
target_core_xcopy.c target: Fix xop->dbl assignment in target_xcopy_parse_segdesc_02 2013-10-01 21:27:21 -07:00
target_core_xcopy.h target: Add support for EXTENDED_COPY copy offload emulation 2013-09-10 16:48:43 -07:00