linux/drivers/target
Nicholas Bellinger d59bebb491 iscsi-target: Fail connection on short sendmsg writes
commit 6bf6ca7515 upstream.

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>
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2015-01-27 07:52:31 -08:00
..
iscsi iscsi-target: Fail connection on short sendmsg writes 2015-01-27 07:52:31 -08:00
loopback tcm: switch to ->show_info() 2013-04-09 14:13:19 -04:00
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 target/tcm_fc: Fix use-after-free of ft_tpg 2014-05-06 07:55:30 -07:00
Kconfig sbp-target: Initial merge of firewire/ieee-1394 target mode support 2012-05-09 15:25:17 -07:00
Makefile target: move code for CDB emulation 2012-07-16 17:27:45 -07:00
target_core_alua.c target: Allow READ_CAPACITY opcode in ALUA Standby access state 2014-06-16 13:42:53 -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: Fix alua_access_state attribute OOPs for un-configured devices 2014-06-16 13:42:53 -07:00
target_core_device.c target: Fix APTPL metadata handling for dynamic MappedLUNs 2014-11-14 08:47:57 -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 target/file: Update hw_max_sectors based on current block_size 2014-01-09 12:24:20 -08:00
target_core_file.h target/file: Update hw_max_sectors based on current block_size 2014-01-09 12:24:20 -08:00
target_core_hba.c target: Update copyright information to 2012 2012-11-27 22:47:02 -08:00
target_core_iblock.c target/iblock: Fix WCE=1 + DPOFUA=1 backend WRITE regression 2013-05-15 01:46:34 -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: Remove unused struct members in se_dev_entry 2013-05-03 16:42:18 -07:00
target_core_pr.c target: Fix APTPL metadata handling for dynamic MappedLUNs 2014-11-14 08:47:57 -08:00
target_core_pr.h target: Fix APTPL metadata handling for dynamic MappedLUNs 2014-11-14 08:47:57 -08:00
target_core_pscsi.c target/pscsi: fix return value check 2013-11-13 12:05:32 +09:00
target_core_pscsi.h target: kill struct se_subsystem_dev 2012-11-06 20:55:43 -08:00
target_core_rd.c target: Explicitly clear ramdisk_mcp backend pages 2014-06-30 20:09:45 -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: Report correct response length for some commands 2014-06-30 20:09:45 -07:00
target_core_spc.c target: Report correct response length for some commands 2014-06-30 20:09:45 -07: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 APTPL metadata handling for dynamic MappedLUNs 2014-11-14 08:47:57 -08:00
target_core_transport.c target: Don't call TFO->write_pending if data_length == 0 2014-12-06 15:05:49 -08:00
target_core_ua.c target: Update copyright information to 2012 2012-11-27 22:47:02 -08:00
target_core_ua.h target: pass sense_reason as a return value 2012-11-06 20:55:46 -08:00