linux/net/bridge
stephen hemminger 7157a527af bridge: fix race with topology change timer
[ Upstream commit 83401eb499 ]

A bridge should only send topology change notice if it is not
the root bridge. It is possible for message age timer to elect itself
as a new root bridge, and still have a topology change timer running
but waiting for bridge lock on other CPU.

Solve the race by checking if we are root bridge before continuing.
This was the root cause of the cases where br_send_tcn_bpdu would OOPS.

Reported-by: JerryKang <jerry.kang@samsung.com>
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-05-19 10:54:45 -07:00
..
netfilter netfilter: bridge: fix wrong pointer dereference 2012-03-06 14:43:49 -05:00
br_device.c br_device: unify return value of .ndo_set_mac_address if address is invalid 2012-02-23 17:03:20 -05:00
br_fdb.c bridge: BH already disabled in br_fdb_cleanup() 2012-01-17 10:17:32 -05:00
br_forward.c set fake_rtable's dst to NULL to avoid kernel Oops 2012-04-24 00:16:24 -04:00
br_if.c bridge: Assign rtnl_link_ops to bridge devices created via ioctl (v2) 2012-07-16 09:03:49 -07:00
br_input.c net: Add export.h for EXPORT_SYMBOL/THIS_MODULE to non-modules 2011-10-31 19:30:30 -04:00
br_ioctl.c Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2011-04-11 13:44:25 -07:00
br_multicast.c bridge: Do not send queries on multicast group leaves 2012-04-11 09:43:13 -04:00
br_netfilter.c bridge: Pull ip header into skb->data before looking into ip header. 2013-02-14 10:49:07 -08:00
br_netlink.c bridge: Assign rtnl_link_ops to bridge devices created via ioctl (v2) 2012-07-16 09:03:49 -07:00
br_notify.c Bridge: Always send NETDEV_CHANGEADDR up on br MAC change. 2011-08-09 21:44:44 -07:00
br_private_stp.h bridge: minor cleanups 2011-07-22 17:01:13 -07:00
br_private.h bridge: Assign rtnl_link_ops to bridge devices created via ioctl (v2) 2012-07-16 09:03:49 -07:00
br_stp_bpdu.c bridge: set priority of STP packets 2013-02-28 06:59:05 -08:00
br_stp_if.c bridge: fix state reporting when port is disabled 2012-03-08 00:25:25 -08:00
br_stp_timer.c bridge: fix race with topology change timer 2013-05-19 10:54:45 -07:00
br_stp.c bridge: br_log_state() s/entering/entered/ 2012-03-08 00:25:25 -08:00
br_sysfs_br.c bridge: allow forwarding some link local frames 2011-10-06 15:27:56 -04:00
br_sysfs_if.c bridge: range check STP parameters 2011-04-04 17:22:29 -07:00
br.c net:bridge: use IS_ENABLED 2011-12-16 15:49:52 -05:00
Kconfig net: bridge builtin vs. ipv6 modular 2011-03-10 13:45:57 -08:00
Makefile bridge: Add core IGMP snooping support 2010-02-28 00:48:45 -08:00