target: Reject SCSI data overflow for fabrics using transport_generic_map_mem_to_cmd
authorNicholas Bellinger <nab@linux-iscsi.org>
Wed, 16 Nov 2011 06:13:24 +0000 (22:13 -0800)
committerNicholas Bellinger <nab@linux-iscsi.org>
Tue, 6 Dec 2011 06:00:53 +0000 (06:00 +0000)
commitfef58a6096770ed6ab49103a430cc755254a74d9
treee59f7c7074c32e604a9b1a9f15550c0249e12546
parent6fd126ffebef3897d8fca98644a9fd1cc5c7a5e3
target: Reject SCSI data overflow for fabrics using transport_generic_map_mem_to_cmd

This patch changes transport_generic_map_mem_to_cmd() to reject SCSI data
overflow and to send exception status with CHECK_CONDITION + TCM_INVALID_CDB_FIELD
for fabrics that are passing a pre-populated struct scatterlist (eg: tcm_loop
and iscsi-target) being mapped into se_cmd->t_data_sg and se_cmd->t_data_nents.

This addresses an OOPs where transport_allocate_data_tasks() would walk
the incorrect post OVERFLOW cmd->data_length value beyond the end of
the passed scatterlist.

Cc: Christoph Hellwig <hch@lst.de>
Cc: Andy Grover <agrover@redhat.com>
Cc: stable@kernel.org
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
drivers/target/target_core_transport.c