linux/net/bridge
Stephen Hemminger c03307eab6 bridge: fix rcu dereference outside of rcu_read_lock
Alternative solution for problem found by Linux Driver Verification
project (linuxtesting.org).

As it noted in the comment before the br_handle_frame_finish
function, this function should be called under rcu_read_lock.

The problem callgraph:
br_dev_xmit -> br_nf_pre_routing_finish_bridge_slow ->
 -> br_handle_frame_finish -> br_port_get_rcu -> rcu_dereference

And in this case there is no read-lock section.

Reported-by: Denis Efremov <yefremov.denis@gmail.com>
Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2012-08-15 15:09:41 -07:00
..
netfilter netfilter: use kfree_skb() not kfree() 2012-06-30 17:26:51 -07: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
br.c net:bridge: use IS_ENABLED 2011-12-16 15:49:52 -05:00
br_device.c bridge: fix rcu dereference outside of rcu_read_lock 2012-08-15 15:09:41 -07:00
br_fdb.c bridge: Convert compare_ether_addr to ether_addr_equal 2012-05-09 20:49:17 -04:00
br_forward.c netpoll: check netpoll tx status on the right device 2012-08-14 14:33:32 -07:00
br_if.c bridge: add some comments for NETDEV_RELEASE 2012-08-14 14:33:31 -07:00
br_input.c bridge: Convert compare_ether_addr to ether_addr_equal 2012-05-09 20:49:17 -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: Fix enforcement of multicast hash_max limit 2012-07-16 22:59:30 -07:00
br_netfilter.c net: Pass optional SKB and SK arguments to dst_ops->{update_pmtu,redirect}() 2012-07-17 03:29:28 -07:00
br_netlink.c bridge: Assign rtnl_link_ops to bridge devices created via ioctl (v2) 2012-06-26 21:12:32 -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.h netpoll: use GFP_ATOMIC in slave_enable_netpoll() and __netpoll_setup() 2012-08-14 14:33:30 -07:00
br_private_stp.h net: cleanup unsigned to unsigned int 2012-04-15 12:44:40 -04:00
br_stp.c net: cleanup unsigned to unsigned int 2012-04-15 12:44:40 -04:00
br_stp_bpdu.c bridge: Convert compare_ether_addr to ether_addr_equal 2012-05-09 20:49:17 -04:00
br_stp_if.c bridge: Convert compare_ether_addr to ether_addr_equal 2012-05-09 20:49:17 -04:00
br_stp_timer.c net: cleanup unsigned to unsigned int 2012-04-15 12:44:40 -04:00
br_sysfs_br.c bridge: Add multicast_querier toggle and disable queries by default 2012-04-15 12:51:35 -04:00
br_sysfs_if.c bridge: make port attributes const 2012-07-30 14:53:22 -07:00