diff options
author | Roland Dreier <roland@purestorage.com> | 2012-07-05 17:16:54 -0400 |
---|---|---|
committer | Roland Dreier <roland@purestorage.com> | 2012-07-08 21:02:33 -0400 |
commit | f747c34af4f56cc239e04505bd583dd3bdcfe49d (patch) | |
tree | e72c1c67ecc48103f02b2fb542dc2033ada0566a /drivers | |
parent | 6887a4131da3adaab011613776d865f4bcfb5678 (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.c | 12 |
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 != |