linux/net/bridge
Bodo Stroesser d69efb1689 bridge: kernel panic when unloading bridge module
There is a race condition when unloading bridge and netfilter.

The problem happens if __fake_rtable is in use by a skb
coming in, while someone starts to unload bridge.ko.
br_netfilter_fini() is called at the beginning of unload
in br_deinit() while skbs still are being forwarded and
transferred to local ip stack. Thus there is a possibility
of the __fake_rtable pointer not being removed in a skb that
goes up to ip stack. This results in a kernel panic, as
ip_rcv() calls the input-function of __fake_rtable, which
is NULL.

Moving the call of br_netfilter_fini() to the end of
br_deinit() solves the problem.

Signed-off-by: Bodo Stroesser <bstroesser@fujitsu-siemens.com>
Signed-off-by: Stephen Hemminger <stephen.hemminger@vyatta.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2008-04-29 03:18:13 -07:00
..
netfilter [NETFILTER]: bridge: add ebt_nflog watcher 2008-04-14 11:15:54 +02:00
Kconfig [BRIDGE]: use llc for receiving STP packets 2006-03-20 22:59:06 -08:00
Makefile [BRIDGE]: netlink interface for link management 2006-06-17 21:26:14 -07:00
br.c bridge: kernel panic when unloading bridge module 2008-04-29 03:18:13 -07:00
br_device.c [BRIDGE]: Assign random address. 2007-12-16 13:35:51 -08:00
br_fdb.c bridge: use time_before() in br_fdb_cleanup() 2008-03-20 15:54:58 -07:00
br_forward.c [BRIDGE]: Kill clone argument to br_flood_* 2007-09-16 16:20:48 -07:00
br_if.c bridge: fix error handling in br_add_if() 2008-04-29 03:17:42 -07:00
br_input.c [BRIDGE]: Use cpu_to_be16() where appropriate. 2008-01-28 14:58:00 -08:00
br_ioctl.c [NET]: Make the device list and device lookups per namespace. 2007-10-10 16:49:10 -07:00
br_netfilter.c Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2008-04-14 02:30:23 -07:00
br_netlink.c [NET] NETNS: Omit sock->sk_net without CONFIG_NET_NS. 2008-03-26 04:39:55 +09:00
br_notify.c [NET] NETNS: Omit net_device->nd_net without CONFIG_NET_NS. 2008-03-26 04:39:53 +09:00
br_private.h Kobject: change net/bridge to use kobject_create_and_add 2008-01-24 20:40:26 -08:00
br_private_stp.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
br_stp.c [BRIDGE]: Round off STP perodic timers. 2007-05-31 01:23:39 -07:00
br_stp_bpdu.c [NET] NETNS: Omit net_device->nd_net without CONFIG_NET_NS. 2008-03-26 04:39:53 +09:00
br_stp_if.c [BRIDGE]: Fix typo in net/bridge/br_stp_if.c 2007-08-14 13:22:58 -07:00
br_stp_timer.c [BRIDGE]: Round off STP perodic timers. 2007-05-31 01:23:39 -07:00
br_sysfs_br.c net: replace remaining __FUNCTION__ occurrences 2008-03-05 20:47:47 -08:00
br_sysfs_if.c Kobject: change net/bridge to use kobject_create_and_add 2008-01-24 20:40:26 -08:00