• C
    bridge: fix some kernel warning in multicast timer · c7e8e8a8
    Cong Wang 提交于
    Several people reported the warning: "kernel BUG at kernel/timer.c:729!"
    and the stack trace is:
    
    	#7 [ffff880214d25c10] mod_timer+501 at ffffffff8106d905
    	#8 [ffff880214d25c50] br_multicast_del_pg.isra.20+261 at ffffffffa0731d25 [bridge]
    	#9 [ffff880214d25c80] br_multicast_disable_port+88 at ffffffffa0732948 [bridge]
    	#10 [ffff880214d25cb0] br_stp_disable_port+154 at ffffffffa072bcca [bridge]
    	#11 [ffff880214d25ce8] br_device_event+520 at ffffffffa072a4e8 [bridge]
    	#12 [ffff880214d25d18] notifier_call_chain+76 at ffffffff8164aafc
    	#13 [ffff880214d25d50] raw_notifier_call_chain+22 at ffffffff810858f6
    	#14 [ffff880214d25d60] call_netdevice_notifiers+45 at ffffffff81536aad
    	#15 [ffff880214d25d80] dev_close_many+183 at ffffffff81536d17
    	#16 [ffff880214d25dc0] rollback_registered_many+168 at ffffffff81537f68
    	#17 [ffff880214d25de8] rollback_registered+49 at ffffffff81538101
    	#18 [ffff880214d25e10] unregister_netdevice_queue+72 at ffffffff815390d8
    	#19 [ffff880214d25e30] __tun_detach+272 at ffffffffa074c2f0 [tun]
    	#20 [ffff880214d25e88] tun_chr_close+45 at ffffffffa074c4bd [tun]
    	#21 [ffff880214d25ea8] __fput+225 at ffffffff8119b1f1
    	#22 [ffff880214d25ef0] ____fput+14 at ffffffff8119b3fe
    	#23 [ffff880214d25f00] task_work_run+159 at ffffffff8107cf7f
    	#24 [ffff880214d25f30] do_notify_resume+97 at ffffffff810139e1
    	#25 [ffff880214d25f50] int_signal+18 at ffffffff8164f292
    
    this is due to I forgot to check if mp->timer is armed in
    br_multicast_del_pg(). This bug is introduced by
    commit 9f00b2e7 (bridge: only expire the mdb entry
    when query is received).
    
    Same for __br_mdb_del().
    Tested-by: Npoma <pomidorabelisima@gmail.com>
    Reported-by: NLiYonghua <809674045@qq.com>
    Reported-by: NRobert 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: NCong Wang <amwang@redhat.com>
    Signed-off-by: NDavid S. Miller <davem@davemloft.net>
    c7e8e8a8
br_multicast.c 41.0 KB