diff options
| author | Roland Dreier <roland@purestorage.com> | 2011-08-17 13:57:43 -0400 |
|---|---|---|
| committer | Roland Dreier <roland@purestorage.com> | 2011-08-17 13:57:43 -0400 |
| commit | 80b43de83781ed67810d54c7892ac9cb2a2601df (patch) | |
| tree | 78969a4c8355302cce821475bfe44d5dc69e5d23 | |
| parent | 22cfb0bf6721bb1f865f67bc21e3c36c272faf36 (diff) | |
| parent | 200ae1a08bec8f3fedfcfe94c892d9a024db4e46 (diff) | |
Merge branches 'ipoib' and 'iser' into for-next
| -rw-r--r-- | drivers/infiniband/ulp/iser/iscsi_iser.c | 10 | ||||
| -rw-r--r-- | drivers/infiniband/ulp/iser/iscsi_iser.h | 2 | ||||
| -rw-r--r-- | drivers/infiniband/ulp/iser/iser_initiator.c | 2 |
3 files changed, 9 insertions, 5 deletions
diff --git a/drivers/infiniband/ulp/iser/iscsi_iser.c b/drivers/infiniband/ulp/iser/iscsi_iser.c index 8db008de5392..9c61b9c2c597 100644 --- a/drivers/infiniband/ulp/iser/iscsi_iser.c +++ b/drivers/infiniband/ulp/iser/iscsi_iser.c | |||
| @@ -101,13 +101,17 @@ iscsi_iser_recv(struct iscsi_conn *conn, | |||
| 101 | 101 | ||
| 102 | /* verify PDU length */ | 102 | /* verify PDU length */ |
| 103 | datalen = ntoh24(hdr->dlength); | 103 | datalen = ntoh24(hdr->dlength); |
| 104 | if (datalen != rx_data_len) { | 104 | if (datalen > rx_data_len || (datalen + 4) < rx_data_len) { |
| 105 | printk(KERN_ERR "iscsi_iser: datalen %d (hdr) != %d (IB) \n", | 105 | iser_err("wrong datalen %d (hdr), %d (IB)\n", |
| 106 | datalen, rx_data_len); | 106 | datalen, rx_data_len); |
| 107 | rc = ISCSI_ERR_DATALEN; | 107 | rc = ISCSI_ERR_DATALEN; |
| 108 | goto error; | 108 | goto error; |
| 109 | } | 109 | } |
| 110 | 110 | ||
| 111 | if (datalen != rx_data_len) | ||
| 112 | iser_dbg("aligned datalen (%d) hdr, %d (IB)\n", | ||
| 113 | datalen, rx_data_len); | ||
| 114 | |||
| 111 | /* read AHS */ | 115 | /* read AHS */ |
| 112 | ahslen = hdr->hlength * 4; | 116 | ahslen = hdr->hlength * 4; |
| 113 | 117 | ||
diff --git a/drivers/infiniband/ulp/iser/iscsi_iser.h b/drivers/infiniband/ulp/iser/iscsi_iser.h index 342cbc1bdaae..db6f3ce9f3bf 100644 --- a/drivers/infiniband/ulp/iser/iscsi_iser.h +++ b/drivers/infiniband/ulp/iser/iscsi_iser.h | |||
| @@ -89,7 +89,7 @@ | |||
| 89 | } while (0) | 89 | } while (0) |
| 90 | 90 | ||
| 91 | #define SHIFT_4K 12 | 91 | #define SHIFT_4K 12 |
| 92 | #define SIZE_4K (1UL << SHIFT_4K) | 92 | #define SIZE_4K (1ULL << SHIFT_4K) |
| 93 | #define MASK_4K (~(SIZE_4K-1)) | 93 | #define MASK_4K (~(SIZE_4K-1)) |
| 94 | 94 | ||
| 95 | /* support up to 512KB in one RDMA */ | 95 | /* support up to 512KB in one RDMA */ |
diff --git a/drivers/infiniband/ulp/iser/iser_initiator.c b/drivers/infiniband/ulp/iser/iser_initiator.c index 5745b7fe158c..f299de6b419b 100644 --- a/drivers/infiniband/ulp/iser/iser_initiator.c +++ b/drivers/infiniband/ulp/iser/iser_initiator.c | |||
| @@ -412,7 +412,7 @@ int iser_send_control(struct iscsi_conn *conn, | |||
| 412 | memcpy(iser_conn->ib_conn->login_buf, task->data, | 412 | memcpy(iser_conn->ib_conn->login_buf, task->data, |
| 413 | task->data_count); | 413 | task->data_count); |
| 414 | tx_dsg->addr = iser_conn->ib_conn->login_dma; | 414 | tx_dsg->addr = iser_conn->ib_conn->login_dma; |
| 415 | tx_dsg->length = data_seg_len; | 415 | tx_dsg->length = task->data_count; |
| 416 | tx_dsg->lkey = device->mr->lkey; | 416 | tx_dsg->lkey = device->mr->lkey; |
| 417 | mdesc->num_sge = 2; | 417 | mdesc->num_sge = 2; |
| 418 | } | 418 | } |
