Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 200d1713 authored by Moni Shoua's avatar Moni Shoua Committed by Jeff Garzik
Browse files

IB/ipoib: Verify address handle validity on send



When the bonding device senses a carrier loss of its active slave it replaces
that slave with a new one. In between the times when the carrier of an IPoIB
device goes down and ipoib_neigh is destroyed, it is possible that the
bonding driver will send a packet on a new slave that uses an old ipoib_neigh.
This patch detects and prevents this from happenning.

Signed-off-by: Moni Shoua <monis at voltaire.com>
Signed-off-by: Or Gerlitz <ogerlitz at voltaire.com>
Acked-by: default avatarRoland Dreier <rdreier@cisco.com>
Signed-off-by: default avatarJeff Garzik <jeff@garzik.org>
parent 732a2170
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -692,9 +692,10 @@ static int ipoib_start_xmit(struct sk_buff *skb, struct net_device *dev)
				goto out;
			}
		} else if (neigh->ah) {
			if (unlikely(memcmp(&neigh->dgid.raw,
			if (unlikely((memcmp(&neigh->dgid.raw,
					    skb->dst->neighbour->ha + 4,
					    sizeof(union ib_gid)))) {
					    sizeof(union ib_gid))) ||
					 (neigh->dev != dev))) {
				spin_lock(&priv->lock);
				/*
				 * It's safe to call ipoib_put_ah() inside