From: Stephen Hemminger The net bridge code oopses at present because it is running init_tier() against pending timers. The bridge needs to ignore up/down notifications when it is down (like 2.4); somewhere with all the other changes I put in, a bug got in and it was looking at networks when the bridge is down. When bridge comes up it scans and sees the state... net/bridge/br_notify.c | 10 +++++++--- 1 files changed, 7 insertions(+), 3 deletions(-) diff -puN net/bridge/br_notify.c~bridge-notification-fix net/bridge/br_notify.c --- 25/net/bridge/br_notify.c~bridge-notification-fix 2003-07-29 20:27:05.000000000 -0700 +++ 25-akpm/net/bridge/br_notify.c 2003-07-29 20:27:05.000000000 -0700 @@ -39,19 +39,23 @@ static int br_device_event(struct notifi br = p->br; spin_lock_bh(&br->lock); + switch (event) { case NETDEV_CHANGEADDR: br_fdb_changeaddr(p, dev->dev_addr); - br_stp_recalculate_bridge_id(br); + if (br->dev->flags & IFF_UP) + br_stp_recalculate_bridge_id(br); break; case NETDEV_DOWN: - br_stp_disable_port(p); + if (br->dev->flags & IFF_UP) + br_stp_disable_port(p); break; case NETDEV_UP: - br_stp_enable_port(p); + if (br->dev->flags & IFF_UP) + br_stp_enable_port(p); break; case NETDEV_UNREGISTER: _