diff options
| -rw-r--r-- | drivers/scsi/libiscsi.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/scsi/libiscsi.c b/drivers/scsi/libiscsi.c index ea025e4806b6..191b59793519 100644 --- a/drivers/scsi/libiscsi.c +++ b/drivers/scsi/libiscsi.c | |||
| @@ -717,11 +717,21 @@ __iscsi_conn_send_pdu(struct iscsi_conn *conn, struct iscsi_hdr *hdr, | |||
| 717 | return NULL; | 717 | return NULL; |
| 718 | } | 718 | } |
| 719 | 719 | ||
| 720 | if (data_size > ISCSI_DEF_MAX_RECV_SEG_LEN) { | ||
| 721 | iscsi_conn_printk(KERN_ERR, conn, "Invalid buffer len of %u for login task. Max len is %u\n", data_size, ISCSI_DEF_MAX_RECV_SEG_LEN); | ||
| 722 | return NULL; | ||
| 723 | } | ||
| 724 | |||
| 720 | task = conn->login_task; | 725 | task = conn->login_task; |
| 721 | } else { | 726 | } else { |
| 722 | if (session->state != ISCSI_STATE_LOGGED_IN) | 727 | if (session->state != ISCSI_STATE_LOGGED_IN) |
| 723 | return NULL; | 728 | return NULL; |
| 724 | 729 | ||
| 730 | if (data_size != 0) { | ||
| 731 | iscsi_conn_printk(KERN_ERR, conn, "Can not send data buffer of len %u for op 0x%x\n", data_size, opcode); | ||
| 732 | return NULL; | ||
| 733 | } | ||
| 734 | |||
| 725 | BUG_ON(conn->c_stage == ISCSI_CONN_INITIAL_STAGE); | 735 | BUG_ON(conn->c_stage == ISCSI_CONN_INITIAL_STAGE); |
| 726 | BUG_ON(conn->c_stage == ISCSI_CONN_STOPPED); | 736 | BUG_ON(conn->c_stage == ISCSI_CONN_STOPPED); |
| 727 | 737 | ||
