aboutsummaryrefslogtreecommitdiffstats
path: root/net/bridge
diff options
context:
space:
mode:
authorStephen Hemminger <shemminger@osdl.org>2006-03-03 20:15:34 -0500
committerDavid S. Miller <davem@sunset.davemloft.net>2006-03-05 00:06:21 -0500
commitd32439c0d4cec5c4101477989ee8c7ee1ebfbb0e (patch)
treec28284854f8f1aa74f60ed8378c0984fbcae747e /net/bridge
parent6e86b89084a60355f0e1fb876ca0cfbca62ee85c (diff)
[BRIDGE]: port timer initialization
Initialize the STP timers for a port when it is created, rather than when it is enabled. This will prevent future race conditions where timer gets started before port is enabled. Signed-off-by: Stephen Hemminger <shemmigner@osdl.org> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/bridge')
-rw-r--r--net/bridge/br_if.c3
-rw-r--r--net/bridge/br_stp_if.c2
2 files changed, 2 insertions, 3 deletions
diff --git a/net/bridge/br_if.c b/net/bridge/br_if.c
index 8b38c839d53..879b54ed2b4 100644
--- a/net/bridge/br_if.c
+++ b/net/bridge/br_if.c
@@ -277,8 +277,9 @@ static struct net_bridge_port *new_nbp(struct net_bridge *br,
277 br_init_port(p); 277 br_init_port(p);
278 p->state = BR_STATE_DISABLED; 278 p->state = BR_STATE_DISABLED;
279 INIT_WORK(&p->carrier_check, port_carrier_check, dev); 279 INIT_WORK(&p->carrier_check, port_carrier_check, dev);
280 kobject_init(&p->kobj); 280 br_stp_port_timer_init(p);
281 281
282 kobject_init(&p->kobj);
282 kobject_set_name(&p->kobj, SYSFS_BRIDGE_PORT_ATTR); 283 kobject_set_name(&p->kobj, SYSFS_BRIDGE_PORT_ATTR);
283 p->kobj.ktype = &brport_ktype; 284 p->kobj.ktype = &brport_ktype;
284 p->kobj.parent = &(dev->class_dev.kobj); 285 p->kobj.parent = &(dev->class_dev.kobj);
diff --git a/net/bridge/br_stp_if.c b/net/bridge/br_stp_if.c
index 35cf3a07408..23dea1422c9 100644
--- a/net/bridge/br_stp_if.c
+++ b/net/bridge/br_stp_if.c
@@ -39,8 +39,6 @@ void br_init_port(struct net_bridge_port *p)
39 p->state = BR_STATE_BLOCKING; 39 p->state = BR_STATE_BLOCKING;
40 p->topology_change_ack = 0; 40 p->topology_change_ack = 0;
41 p->config_pending = 0; 41 p->config_pending = 0;
42
43 br_stp_port_timer_init(p);
44} 42}
45 43
46/* called under bridge lock */ 44/* called under bridge lock */