diff options
author | Nicholas Bellinger <nab@linux-iscsi.org> | 2012-09-30 00:51:26 -0400 |
---|---|---|
committer | Nicholas Bellinger <nab@linux-iscsi.org> | 2012-10-02 16:17:32 -0400 |
commit | 21f5aa7eb8572b5cfe36884c23d306c72fe3987c (patch) | |
tree | 086e4ca875ef4b24662f36a7ed5dcac071d1dc77 /drivers/target/iscsi | |
parent | 9977bb18c92e694819266fc0e7c5a3cd0cd7b626 (diff) |
iscsi-target: Convert incoming PDU payload checks to MaxXmitDataSegmentLength
Now that iscsi-target supports a local configurable MaxXmitDataSegmentLength,
go ahead and make ISCSI_OP_SCSI_CMD, ISCSI_OP_SCSI_DATA_OUT, ISCSI_OP_NOOP_OUT
and ISCSI_OP_TEXT PDU payload checks honor conn_ops->MaxXmitDataSegmentLength.
Cc: Mike Christie <michaelc@cs.wisc.edu>
Cc: Andy Grover <agrover@redhat.com>
Cc: Hannes Reinecke <hare@suse.de>
Cc: Roland Dreier <roland@purestorage.com>
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
Diffstat (limited to 'drivers/target/iscsi')
-rw-r--r-- | drivers/target/iscsi/iscsi_target.c | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/drivers/target/iscsi/iscsi_target.c b/drivers/target/iscsi/iscsi_target.c index 30842e195996..632a5aeb14d9 100644 --- a/drivers/target/iscsi/iscsi_target.c +++ b/drivers/target/iscsi/iscsi_target.c | |||
@@ -869,10 +869,10 @@ done: | |||
869 | buf, conn); | 869 | buf, conn); |
870 | } | 870 | } |
871 | 871 | ||
872 | if (payload_length > conn->conn_ops->MaxRecvDataSegmentLength) { | 872 | if (payload_length > conn->conn_ops->MaxXmitDataSegmentLength) { |
873 | pr_err("DataSegmentLength: %u is greater than" | 873 | pr_err("DataSegmentLength: %u is greater than" |
874 | " MaxRecvDataSegmentLength: %u, protocol error.\n", | 874 | " MaxXmitDataSegmentLength: %u, protocol error.\n", |
875 | payload_length, conn->conn_ops->MaxRecvDataSegmentLength); | 875 | payload_length, conn->conn_ops->MaxXmitDataSegmentLength); |
876 | return iscsit_add_reject(ISCSI_REASON_PROTOCOL_ERROR, 1, | 876 | return iscsit_add_reject(ISCSI_REASON_PROTOCOL_ERROR, 1, |
877 | buf, conn); | 877 | buf, conn); |
878 | } | 878 | } |
@@ -1216,10 +1216,10 @@ static int iscsit_handle_data_out(struct iscsi_conn *conn, unsigned char *buf) | |||
1216 | } | 1216 | } |
1217 | spin_unlock_bh(&conn->sess->session_stats_lock); | 1217 | spin_unlock_bh(&conn->sess->session_stats_lock); |
1218 | 1218 | ||
1219 | if (payload_length > conn->conn_ops->MaxRecvDataSegmentLength) { | 1219 | if (payload_length > conn->conn_ops->MaxXmitDataSegmentLength) { |
1220 | pr_err("DataSegmentLength: %u is greater than" | 1220 | pr_err("DataSegmentLength: %u is greater than" |
1221 | " MaxRecvDataSegmentLength: %u\n", payload_length, | 1221 | " MaxXmitDataSegmentLength: %u\n", payload_length, |
1222 | conn->conn_ops->MaxRecvDataSegmentLength); | 1222 | conn->conn_ops->MaxXmitDataSegmentLength); |
1223 | return iscsit_add_reject(ISCSI_REASON_PROTOCOL_ERROR, 1, | 1223 | return iscsit_add_reject(ISCSI_REASON_PROTOCOL_ERROR, 1, |
1224 | buf, conn); | 1224 | buf, conn); |
1225 | } | 1225 | } |
@@ -1437,11 +1437,11 @@ static int iscsit_handle_nop_out( | |||
1437 | buf, conn); | 1437 | buf, conn); |
1438 | } | 1438 | } |
1439 | 1439 | ||
1440 | if (payload_length > conn->conn_ops->MaxRecvDataSegmentLength) { | 1440 | if (payload_length > conn->conn_ops->MaxXmitDataSegmentLength) { |
1441 | pr_err("NOPOUT Ping Data DataSegmentLength: %u is" | 1441 | pr_err("NOPOUT Ping Data DataSegmentLength: %u is" |
1442 | " greater than MaxRecvDataSegmentLength: %u, protocol" | 1442 | " greater than MaxXmitDataSegmentLength: %u, protocol" |
1443 | " error.\n", payload_length, | 1443 | " error.\n", payload_length, |
1444 | conn->conn_ops->MaxRecvDataSegmentLength); | 1444 | conn->conn_ops->MaxXmitDataSegmentLength); |
1445 | return iscsit_add_reject(ISCSI_REASON_PROTOCOL_ERROR, 1, | 1445 | return iscsit_add_reject(ISCSI_REASON_PROTOCOL_ERROR, 1, |
1446 | buf, conn); | 1446 | buf, conn); |
1447 | } | 1447 | } |
@@ -1874,10 +1874,10 @@ static int iscsit_handle_text_cmd( | |||
1874 | hdr->cmdsn = be32_to_cpu(hdr->cmdsn); | 1874 | hdr->cmdsn = be32_to_cpu(hdr->cmdsn); |
1875 | hdr->exp_statsn = be32_to_cpu(hdr->exp_statsn); | 1875 | hdr->exp_statsn = be32_to_cpu(hdr->exp_statsn); |
1876 | 1876 | ||
1877 | if (payload_length > conn->conn_ops->MaxRecvDataSegmentLength) { | 1877 | if (payload_length > conn->conn_ops->MaxXmitDataSegmentLength) { |
1878 | pr_err("Unable to accept text parameter length: %u" | 1878 | pr_err("Unable to accept text parameter length: %u" |
1879 | "greater than MaxRecvDataSegmentLength %u.\n", | 1879 | "greater than MaxXmitDataSegmentLength %u.\n", |
1880 | payload_length, conn->conn_ops->MaxRecvDataSegmentLength); | 1880 | payload_length, conn->conn_ops->MaxXmitDataSegmentLength); |
1881 | return iscsit_add_reject(ISCSI_REASON_PROTOCOL_ERROR, 1, | 1881 | return iscsit_add_reject(ISCSI_REASON_PROTOCOL_ERROR, 1, |
1882 | buf, conn); | 1882 | buf, conn); |
1883 | } | 1883 | } |