--- /dev/null
+From shemminger@osdl.org Tue Oct 11 13:37:00 2005
+Date: Tue, 11 Oct 2005 13:33:28 -0700
+From: Stephen Hemminger <shemminger@osdl.org>
+To: Ryan Harper <ryanh@us.ibm.com>, "David S. Miller" <davem@davemloft.net>
+Cc: netdev@oss.sgi.com, Chris Wright <chrisw@osdl.org>, Greg KH <greg@kroah.com>
+Subject: [PATCH] br: fix race on bridge del if
+
+This fixes the RCU race on bridge delete interface. Basically,
+the network device has to be detached from the bridge in the first
+step (pre-RCU), rather than later. At that point, no more bridge traffic
+will come in, and the other code will not think that network device
+is part of a bridge.
+
+This should also fix the XEN test problems. If there is another
+2.6.13-stable, add it as well.
+
+Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
+Signed-off-by: Chris Wright <chrisw@osdl.org>
+---
+ net/bridge/br_if.c | 2 +-
+ 1 files changed, 1 insertion(+), 1 deletion(-)
+
+Index: linux-2.6.13.y/net/bridge/br_if.c
+===================================================================
+--- linux-2.6.13.y.orig/net/bridge/br_if.c
++++ linux-2.6.13.y/net/bridge/br_if.c
+@@ -79,7 +79,6 @@ static void destroy_nbp(struct net_bridg
+ {
+ struct net_device *dev = p->dev;
+
+- dev->br_port = NULL;
+ p->br = NULL;
+ p->dev = NULL;
+ dev_put(dev);
+@@ -100,6 +99,7 @@ static void del_nbp(struct net_bridge_po
+ struct net_bridge *br = p->br;
+ struct net_device *dev = p->dev;
+
++ dev->br_port = NULL;
+ dev_set_promiscuity(dev, -1);
+
+ spin_lock_bh(&br->lock);