linux/drivers/target
Nicholas Bellinger 6bf6ca7515 iscsi-target: Fail connection on short sendmsg writes
This patch changes iscsit_do_tx_data() to fail on short writes
when kernel_sendmsg() returns a value different than requested
transfer length, returning -EPIPE and thus causing a connection
reset to occur.

This avoids a potential bug in the original code where a short
write would result in kernel_sendmsg() being called again with
the original iovec base + length.

In practice this has not been an issue because iscsit_do_tx_data()
is only used for transferring 48 byte headers + 4 byte digests,
along with seldom used control payloads from NOPIN + TEXT_RSP +
REJECT with less than 32k of data.

So following Al's audit of iovec consumers, go ahead and fail
the connection on short writes for now, and remove the bogus
logic ahead of his proper upstream fix.

Reported-by: Al Viro <viro@zeniv.linux.org.uk>
Cc: David S. Miller <davem@davemloft.net>
Cc: <stable@vger.kernel.org> # v3.1+
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
2014-12-16 01:22:30 -08:00
..
iscsi iscsi-target: Fail connection on short sendmsg writes 2014-12-16 01:22:30 -08:00
loopback tcm_loop: Fix wrong I_T nexus association 2014-12-01 21:36:21 -08:00
sbp target: Pass in transport supported PI at session initialization 2014-04-07 01:48:54 -07:00
tcm_fc tcm_fc: Replace rcu_assign_pointer() with RCU_INIT_POINTER() 2014-09-15 14:27:33 -07:00
Kconfig target: Add a user-passthrough backstore 2014-10-03 11:15:20 -07:00
Makefile target: Add a user-passthrough backstore 2014-10-03 11:15:20 -07:00
target_core_alua.c target: encapsulate smp_mb__after_atomic() 2014-10-01 14:39:06 -07:00
target_core_alua.h target_core_alua: Referrals configfs integration 2014-01-09 21:48:35 -08:00
target_core_configfs.c target: Drop left-over internal dev attribute code 2014-12-01 21:36:21 -08:00
target_core_device.c target: Drop left-over PHBA_PDEV set attr checks 2014-12-01 21:36:21 -08:00
target_core_fabric_configfs.c target: Change core_dev_del_lun to take a se_lun instead of unpacked_lun 2014-10-01 14:38:48 -07:00
target_core_fabric_lib.c target: fix pr_out length in iscsi_parse_pr_out_transport_id 2014-09-17 15:17:35 -07:00
target_core_file.c target/file: Convert to external fileio_backend_dev_attrs 2014-12-01 21:36:02 -08:00
target_core_file.h Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending 2014-01-31 15:31:23 -08:00
target_core_hba.c target: Move dev_cit to struct se_subsystem_api 2014-12-01 21:35:22 -08:00
target_core_iblock.c target/iblock: Convert to external iblock_backend_dev_attrs 2014-12-01 21:36:02 -08: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 EXPORT_SYMBOL for existing se_dev_set_* 2014-12-01 21:36:02 -08:00
target_core_pr.c target: Avoid dropping AllRegistrants reservation during unregister 2014-12-15 20:38:34 -08:00
target_core_pr.h target: Fix APTPL metadata handling for dynamic MappedLUNs 2014-10-04 05:40:19 +00:00
target_core_pscsi.c target/pscsi: Convert to external pscsi_backend_dev_attrs 2014-12-01 21:36:03 -08:00
target_core_pscsi.h target: kill struct se_subsystem_dev 2012-11-06 20:55:43 -08:00
target_core_rd.c target/rd: Convert to external rd_mcp_backend_dev_attrs 2014-12-01 21:36:02 -08:00
target_core_rd.h target/rd: Add support for protection SGL setup + release 2014-01-19 02:22:05 +00:00
target_core_sbc.c target: Remove unneeded check in sbc_parse_cdb 2014-10-02 21:35:53 -07:00
target_core_spc.c target: Fix user data segment multiplier in spc_emulate_evpd_b3() 2014-09-17 10:53:25 -07:00
target_core_stat.c target: Convert se_device statistics to atomic_long_t 2013-11-13 18:34:55 -08:00
target_core_tmr.c target: simplify core_tmr_abort_task 2014-10-01 14:39:10 -07:00
target_core_tpg.c Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending 2014-10-21 13:06:38 -07:00
target_core_transport.c target: Don't call TFO->write_pending if data_length == 0 2014-10-28 13:54:15 -07:00
target_core_ua.c target: encapsulate smp_mb__after_atomic() 2014-10-01 14:39:06 -07:00
target_core_ua.h target: target_core_ua_h: Add #define of include guard 2014-09-15 14:27:43 -07:00
target_core_user.c target/user: Convert to external tcmu_backend_dev_attrs 2014-12-01 21:36:03 -08:00
target_core_xcopy.c target: cleanup some boolean tests 2014-06-06 14:21:01 -07:00
target_core_xcopy.h target: Add support for EXTENDED_COPY copy offload emulation 2013-09-10 16:48:43 -07:00