提交 dbcbc95c 编写于 作者: N Nicholas Bellinger

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: NSantosh Kulkarni <santosh.kulkarni@calsoftinc.com>
Signed-off-by: NNicholas Bellinger <nab@linux-iscsi.org>
上级 95b60f07
...@@ -1249,9 +1249,8 @@ iscsit_check_dataout_hdr(struct iscsi_conn *conn, unsigned char *buf, ...@@ -1249,9 +1249,8 @@ iscsit_check_dataout_hdr(struct iscsi_conn *conn, unsigned char *buf,
int rc; int rc;
if (!payload_length) { if (!payload_length) {
pr_err("DataOUT payload is ZERO, protocol error.\n"); pr_warn("DataOUT payload is ZERO, ignoring.\n");
return iscsit_add_reject(conn, ISCSI_REASON_PROTOCOL_ERROR, return 0;
buf);
} }
/* iSCSI write */ /* iSCSI write */
...@@ -1481,7 +1480,7 @@ EXPORT_SYMBOL(iscsit_check_dataout_payload); ...@@ -1481,7 +1480,7 @@ EXPORT_SYMBOL(iscsit_check_dataout_payload);
static int iscsit_handle_data_out(struct iscsi_conn *conn, unsigned char *buf) static int iscsit_handle_data_out(struct iscsi_conn *conn, unsigned char *buf)
{ {
struct iscsi_cmd *cmd; struct iscsi_cmd *cmd = NULL;
struct iscsi_data *hdr = (struct iscsi_data *)buf; struct iscsi_data *hdr = (struct iscsi_data *)buf;
int rc; int rc;
bool data_crc_failed = false; bool data_crc_failed = false;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册