patch-2.4.20 linux-2.4.20/net/bridge/br_if.c
Next file: linux-2.4.20/net/bridge/br_stp.c
Previous file: linux-2.4.20/net/bridge/br.c
Back to the patch index
Back to the overall index
- Lines: 47
- Date:
Thu Nov 28 15:53:15 2002
- Orig file:
linux-2.4.19/net/bridge/br_if.c
- Orig date:
Mon Feb 25 11:38:14 2002
diff -urN linux-2.4.19/net/bridge/br_if.c linux-2.4.20/net/bridge/br_if.c
@@ -18,6 +18,7 @@
#include <linux/if_bridge.h>
#include <linux/inetdevice.h>
#include <linux/rtnetlink.h>
+#include <linux/brlock.h>
#include <asm/uaccess.h>
#include "br_private.h"
@@ -37,7 +38,7 @@
return 100;
}
-/* called under bridge lock */
+/* called under BR_NETPROTO_LOCK and bridge lock */
static int __br_del_if(struct net_bridge *br, struct net_device *dev)
{
struct net_bridge_port *p;
@@ -86,10 +87,12 @@
static void del_ifs(struct net_bridge *br)
{
- write_lock_bh(&br->lock);
+ br_write_lock_bh(BR_NETPROTO_LOCK);
+ write_lock(&br->lock);
while (br->port_list != NULL)
__br_del_if(br, br->port_list->dev);
- write_unlock_bh(&br->lock);
+ write_unlock(&br->lock);
+ br_write_unlock_bh(BR_NETPROTO_LOCK);
}
static struct net_bridge *new_nb(char *name)
@@ -252,10 +255,12 @@
{
int retval;
- write_lock_bh(&br->lock);
+ br_write_lock_bh(BR_NETPROTO_LOCK);
+ write_lock(&br->lock);
retval = __br_del_if(br, dev);
br_stp_recalculate_bridge_id(br);
- write_unlock_bh(&br->lock);
+ write_unlock(&br->lock);
+ br_write_unlock_bh(BR_NETPROTO_LOCK);
return retval;
}
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)