From mboxrd@z Thu Jan 1 00:00:00 1970 From: Moni Shoua Subject: [PATCH V4 4/10] IB/ipoib: Verify address handle validity on send Date: Mon, 20 Aug 2007 18:46:10 +0300 Message-ID: <46C9B742.8070707@voltaire.com> References: <46C9B474.5020202@voltaire.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Cc: netdev@vger.kernel.org, general@lists.openfabrics.org To: rdreier@cisco.com, davem@davemloft.net, fubar@us.ibm.com Return-path: Received: from fwil.voltaire.com ([193.47.165.2]:29125 "EHLO exil.voltaire.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1759370AbXHTPqN (ORCPT ); Mon, 20 Aug 2007 11:46:13 -0400 In-Reply-To: <46C9B474.5020202@voltaire.com> Sender: netdev-owner@vger.kernel.org List-Id: netdev.vger.kernel.org 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 Signed-off-by: Or Gerlitz --- drivers/infiniband/ulp/ipoib/ipoib_main.c | 5 +++-- 1 files changed, 3 insertions(+), 2 deletions(-) Index: net-2.6/drivers/infiniband/ulp/ipoib/ipoib_main.c =================================================================== --- net-2.6.orig/drivers/infiniband/ulp/ipoib/ipoib_main.c 2007-08-15 10:53:52.000000000 +0300 +++ net-2.6/drivers/infiniband/ulp/ipoib/ipoib_main.c 2007-08-15 10:54:03.959364640 +0300 @@ -686,9 +686,10 @@ static int ipoib_start_xmit(struct sk_bu 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