Merge tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rdma/rdma
[sfrench/cifs-2.6.git] / drivers / infiniband / hw / cxgb4 / cm.c
index 0f3b1193d5f8552b65f05a63f7016ba32a417ed3..e87fc0408470452c4bc5600c127f69848c2c3cb3 100644 (file)
@@ -953,7 +953,7 @@ static int send_mpa_req(struct c4iw_ep *ep, struct sk_buff *skb,
        mpalen = sizeof(*mpa) + ep->plen;
        if (mpa_rev_to_use == 2)
                mpalen += sizeof(struct mpa_v2_conn_params);
-       wrlen = roundup(mpalen + sizeof *req, 16);
+       wrlen = roundup(mpalen + sizeof(*req), 16);
        skb = get_skb(skb, wrlen, GFP_KERNEL);
        if (!skb) {
                connect_reply_upcall(ep, -ENOMEM);
@@ -997,8 +997,9 @@ static int send_mpa_req(struct c4iw_ep *ep, struct sk_buff *skb,
        }
 
        if (mpa_rev_to_use == 2) {
-               mpa->private_data_size = htons(ntohs(mpa->private_data_size) +
-                                              sizeof (struct mpa_v2_conn_params));
+               mpa->private_data_size =
+                       htons(ntohs(mpa->private_data_size) +
+                             sizeof(struct mpa_v2_conn_params));
                pr_debug("initiator ird %u ord %u\n", ep->ird,
                         ep->ord);
                mpa_v2_params.ird = htons((u16)ep->ird);
@@ -1057,7 +1058,7 @@ static int send_mpa_reject(struct c4iw_ep *ep, const void *pdata, u8 plen)
        mpalen = sizeof(*mpa) + plen;
        if (ep->mpa_attr.version == 2 && ep->mpa_attr.enhanced_rdma_conn)
                mpalen += sizeof(struct mpa_v2_conn_params);
-       wrlen = roundup(mpalen + sizeof *req, 16);
+       wrlen = roundup(mpalen + sizeof(*req), 16);
 
        skb = get_skb(NULL, wrlen, GFP_KERNEL);
        if (!skb) {
@@ -1088,8 +1089,9 @@ static int send_mpa_reject(struct c4iw_ep *ep, const void *pdata, u8 plen)
 
        if (ep->mpa_attr.version == 2 && ep->mpa_attr.enhanced_rdma_conn) {
                mpa->flags |= MPA_ENHANCED_RDMA_CONN;
-               mpa->private_data_size = htons(ntohs(mpa->private_data_size) +
-                                              sizeof (struct mpa_v2_conn_params));
+               mpa->private_data_size =
+                       htons(ntohs(mpa->private_data_size) +
+                             sizeof(struct mpa_v2_conn_params));
                mpa_v2_params.ird = htons(((u16)ep->ird) |
                                          (peer2peer ? MPA_V2_PEER2PEER_MODEL :
                                           0));
@@ -1136,7 +1138,7 @@ static int send_mpa_reply(struct c4iw_ep *ep, const void *pdata, u8 plen)
        mpalen = sizeof(*mpa) + plen;
        if (ep->mpa_attr.version == 2 && ep->mpa_attr.enhanced_rdma_conn)
                mpalen += sizeof(struct mpa_v2_conn_params);
-       wrlen = roundup(mpalen + sizeof *req, 16);
+       wrlen = roundup(mpalen + sizeof(*req), 16);
 
        skb = get_skb(NULL, wrlen, GFP_KERNEL);
        if (!skb) {
@@ -1171,8 +1173,9 @@ static int send_mpa_reply(struct c4iw_ep *ep, const void *pdata, u8 plen)
 
        if (ep->mpa_attr.version == 2 && ep->mpa_attr.enhanced_rdma_conn) {
                mpa->flags |= MPA_ENHANCED_RDMA_CONN;
-               mpa->private_data_size = htons(ntohs(mpa->private_data_size) +
-                                              sizeof (struct mpa_v2_conn_params));
+               mpa->private_data_size =
+                       htons(ntohs(mpa->private_data_size) +
+                             sizeof(struct mpa_v2_conn_params));
                mpa_v2_params.ird = htons((u16)ep->ird);
                mpa_v2_params.ord = htons((u16)ep->ord);
                if (peer2peer && (ep->mpa_attr.p2p_type !=
@@ -3230,17 +3233,22 @@ static int pick_local_ipaddrs(struct c4iw_dev *dev, struct iw_cm_id *cm_id)
        int found = 0;
        struct sockaddr_in *laddr = (struct sockaddr_in *)&cm_id->m_local_addr;
        struct sockaddr_in *raddr = (struct sockaddr_in *)&cm_id->m_remote_addr;
+       const struct in_ifaddr *ifa;
 
        ind = in_dev_get(dev->rdev.lldi.ports[0]);
        if (!ind)
                return -EADDRNOTAVAIL;
-       for_primary_ifa(ind) {
+       rcu_read_lock();
+       in_dev_for_each_ifa_rcu(ifa, ind) {
+               if (ifa->ifa_flags & IFA_F_SECONDARY)
+                       continue;
                laddr->sin_addr.s_addr = ifa->ifa_address;
                raddr->sin_addr.s_addr = ifa->ifa_address;
                found = 1;
                break;
        }
-       endfor_ifa(ind);
+       rcu_read_unlock();
+
        in_dev_put(ind);
        return found ? 0 : -EADDRNOTAVAIL;
 }