aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorRoland Dreier <roland@purestorage.com>2012-07-05 17:16:54 -0400
committerRoland Dreier <roland@purestorage.com>2012-07-08 21:02:33 -0400
commitf747c34af4f56cc239e04505bd583dd3bdcfe49d (patch)
treee72c1c67ecc48103f02b2fb542dc2033ada0566a /drivers
parent6887a4131da3adaab011613776d865f4bcfb5678 (diff)
RDMA/cxgb4: Fix endianness of addition to mpa->private_data_size
sparse correctly warns that if mpa->private_data_size is __be16, then doing += on it is wrong, even if we do += htons(<something>) -- on a little endian system, carries will go the wrong way. Fix this up by doing the addition in native byte order. Acked-by: Steve Wise <swise@opengridcomputing.com> Signed-off-by: Roland Dreier <roland@purestorage.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/infiniband/hw/cxgb4/cm.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/drivers/infiniband/hw/cxgb4/cm.c b/drivers/infiniband/hw/cxgb4/cm.c
index b18870c455ad..51f42061dae9 100644
--- a/drivers/infiniband/hw/cxgb4/cm.c
+++ b/drivers/infiniband/hw/cxgb4/cm.c
@@ -548,8 +548,8 @@ static void send_mpa_req(struct c4iw_ep *ep, struct sk_buff *skb,
548 } 548 }
549 549
550 if (mpa_rev_to_use == 2) { 550 if (mpa_rev_to_use == 2) {
551 mpa->private_data_size += 551 mpa->private_data_size = htons(ntohs(mpa->private_data_size) +
552 htons(sizeof(struct mpa_v2_conn_params)); 552 sizeof (struct mpa_v2_conn_params));
553 mpa_v2_params.ird = htons((u16)ep->ird); 553 mpa_v2_params.ird = htons((u16)ep->ird);
554 mpa_v2_params.ord = htons((u16)ep->ord); 554 mpa_v2_params.ord = htons((u16)ep->ord);
555 555
@@ -635,8 +635,8 @@ static int send_mpa_reject(struct c4iw_ep *ep, const void *pdata, u8 plen)
635 635
636 if (ep->mpa_attr.version == 2 && ep->mpa_attr.enhanced_rdma_conn) { 636 if (ep->mpa_attr.version == 2 && ep->mpa_attr.enhanced_rdma_conn) {
637 mpa->flags |= MPA_ENHANCED_RDMA_CONN; 637 mpa->flags |= MPA_ENHANCED_RDMA_CONN;
638 mpa->private_data_size += 638 mpa->private_data_size = htons(ntohs(mpa->private_data_size) +
639 htons(sizeof(struct mpa_v2_conn_params)); 639 sizeof (struct mpa_v2_conn_params));
640 mpa_v2_params.ird = htons(((u16)ep->ird) | 640 mpa_v2_params.ird = htons(((u16)ep->ird) |
641 (peer2peer ? MPA_V2_PEER2PEER_MODEL : 641 (peer2peer ? MPA_V2_PEER2PEER_MODEL :
642 0)); 642 0));
@@ -715,8 +715,8 @@ static int send_mpa_reply(struct c4iw_ep *ep, const void *pdata, u8 plen)
715 715
716 if (ep->mpa_attr.version == 2 && ep->mpa_attr.enhanced_rdma_conn) { 716 if (ep->mpa_attr.version == 2 && ep->mpa_attr.enhanced_rdma_conn) {
717 mpa->flags |= MPA_ENHANCED_RDMA_CONN; 717 mpa->flags |= MPA_ENHANCED_RDMA_CONN;
718 mpa->private_data_size += 718 mpa->private_data_size = htons(ntohs(mpa->private_data_size) +
719 htons(sizeof(struct mpa_v2_conn_params)); 719 sizeof (struct mpa_v2_conn_params));
720 mpa_v2_params.ird = htons((u16)ep->ird); 720 mpa_v2_params.ird = htons((u16)ep->ird);
721 mpa_v2_params.ord = htons((u16)ep->ord); 721 mpa_v2_params.ord = htons((u16)ep->ord);
722 if (peer2peer && (ep->mpa_attr.p2p_type != 722 if (peer2peer && (ep->mpa_attr.p2p_type !=