]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
ib/ipoib: ipoib_cm_rep_handler lock skb queue while dequeue before xmit
authorTal Alon <talal@mellanox.com>
Wed, 26 Jun 2013 08:12:51 +0000 (11:12 +0300)
committerMukesh Kacker <mukesh.kacker@oracle.com>
Tue, 7 Jul 2015 21:45:12 +0000 (14:45 -0700)
Signed-off-by: Tal Alon <talal@mellanox.com>
(Ported from Mellanox OFED 2.4)

Signed-off-by: Mukesh Kacker <mukesh.kacker@oracle.com>
drivers/infiniband/ulp/ipoib/ipoib_cm.c

index cf7d15323fee942ab9ae3511f219c4d3c277df0b..316c58fb4a5ab89a1d204c26fdd24466b6b7a403 100644 (file)
@@ -1008,7 +1008,6 @@ static int ipoib_cm_rep_handler(struct ib_cm_id *cm_id, struct ib_cm_event *even
        if (p->neigh)
                while ((skb = __skb_dequeue(&p->neigh->queue)))
                        __skb_queue_tail(&skqueue, skb);
-       spin_unlock_irq(&priv->lock);
 
        while ((skb = __skb_dequeue(&skqueue))) {
                skb->dev = p->dev;
@@ -1018,6 +1017,8 @@ static int ipoib_cm_rep_handler(struct ib_cm_id *cm_id, struct ib_cm_event *even
                                         " packet, ret:%d\n", __func__, ret);
        }
 
+       spin_unlock_irq(&priv->lock);
+
        ret = ib_send_cm_rtu(cm_id, NULL, 0);
        if (ret) {
                ipoib_warn(priv, "failed to send RTU: %d\n", ret);