aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/target
diff options
context:
space:
mode:
authorNicholas Bellinger <nab@linux-iscsi.org>2013-11-06 23:55:39 -0500
committerNicholas Bellinger <nab@linux-iscsi.org>2013-11-07 15:08:56 -0500
commitdbcbc95cd85854588ac80c0a6d98586fa2129418 (patch)
tree7f8921a0cc0fa357e680ab7d4938bb84afb9d9c1 /drivers/target
parent95b60f078899a9680688bab909d02169e1fd632e (diff)
iscsi-target: Do not generate REJECTs for zero-length DataOUT
This patch changes iscsit_check_dataout_hdr() to no longer generate REJECTs for zero-length DataOUTs, and instead simply ignore these requests. This follows RFC-3720, Section 10.7.7. DataSegmentLength "This is the data payload length of a SCSI Data-In or SCSI Data-Out PDU. The sending of 0 length data segments should be avoided, but initiators and targets MUST be able to properly receive 0 length data segments." Reported-by: Santosh Kulkarni <santosh.kulkarni@calsoftinc.com> Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
Diffstat (limited to 'drivers/target')
-rw-r--r--drivers/target/iscsi/iscsi_target.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/drivers/target/iscsi/iscsi_target.c b/drivers/target/iscsi/iscsi_target.c
index e183352a0645..ab64cbbb4976 100644
--- a/drivers/target/iscsi/iscsi_target.c
+++ b/drivers/target/iscsi/iscsi_target.c
@@ -1249,9 +1249,8 @@ iscsit_check_dataout_hdr(struct iscsi_conn *conn, unsigned char *buf,
1249 int rc; 1249 int rc;
1250 1250
1251 if (!payload_length) { 1251 if (!payload_length) {
1252 pr_err("DataOUT payload is ZERO, protocol error.\n"); 1252 pr_warn("DataOUT payload is ZERO, ignoring.\n");
1253 return iscsit_add_reject(conn, ISCSI_REASON_PROTOCOL_ERROR, 1253 return 0;
1254 buf);
1255 } 1254 }
1256 1255
1257 /* iSCSI write */ 1256 /* iSCSI write */
@@ -1481,7 +1480,7 @@ EXPORT_SYMBOL(iscsit_check_dataout_payload);
1481 1480
1482static int iscsit_handle_data_out(struct iscsi_conn *conn, unsigned char *buf) 1481static int iscsit_handle_data_out(struct iscsi_conn *conn, unsigned char *buf)
1483{ 1482{
1484 struct iscsi_cmd *cmd; 1483 struct iscsi_cmd *cmd = NULL;
1485 struct iscsi_data *hdr = (struct iscsi_data *)buf; 1484 struct iscsi_data *hdr = (struct iscsi_data *)buf;
1486 int rc; 1485 int rc;
1487 bool data_crc_failed = false; 1486 bool data_crc_failed = false;