Message ID | 1373024177-18191-1-git-send-email-amwang@redhat.com |
---|---|
State | Accepted, archived |
Delegated to: | David Miller |
Headers | show |
From: Cong Wang <amwang@redhat.com> Date: Fri, 5 Jul 2013 19:36:17 +0800 > From: Cong Wang <amwang@redhat.com> > > Several people reported the warning: "kernel BUG at kernel/timer.c:729!" > and the stack trace is: ... > this is due to I forgot to check if mp->timer is armed in > br_multicast_del_pg(). This bug is introduced by > commit 9f00b2e7cf241fa389733d41b6 (bridge: only expire the mdb entry > when query is received). > > Same for __br_mdb_del(). > > Tested-by: poma <pomidorabelisima@gmail.com> > Reported-by: LiYonghua <809674045@qq.com> > Reported-by: Robert Hancock <hancockrwd@gmail.com> > Cc: Herbert Xu <herbert@gondor.apana.org.au> > Cc: Stephen Hemminger <stephen@networkplumber.org> > Cc: "David S. Miller" <davem@davemloft.net> > Signed-off-by: Cong Wang <amwang@redhat.com> Applied, thanks. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/net/bridge/br_mdb.c b/net/bridge/br_mdb.c index 19942e3..0daae3e 100644 --- a/net/bridge/br_mdb.c +++ b/net/bridge/br_mdb.c @@ -447,7 +447,7 @@ static int __br_mdb_del(struct net_bridge *br, struct br_mdb_entry *entry) call_rcu_bh(&p->rcu, br_multicast_free_pg); err = 0; - if (!mp->ports && !mp->mglist && + if (!mp->ports && !mp->mglist && mp->timer_armed && netif_running(br->dev)) mod_timer(&mp->timer, jiffies); break; diff --git a/net/bridge/br_multicast.c b/net/bridge/br_multicast.c index 81befac..69af490 100644 --- a/net/bridge/br_multicast.c +++ b/net/bridge/br_multicast.c @@ -270,7 +270,7 @@ static void br_multicast_del_pg(struct net_bridge *br, del_timer(&p->timer); call_rcu_bh(&p->rcu, br_multicast_free_pg); - if (!mp->ports && !mp->mglist && + if (!mp->ports && !mp->mglist && mp->timer_armed && netif_running(br->dev)) mod_timer(&mp->timer, jiffies);