linux/net/core
Eric Dumazet 54764bb647 ipv4: Restore old dst_free() behavior.
commit 404e0a8b6a (net: ipv4: fix RCU races on dst refcounts) tried
to solve a race but added a problem at device/fib dismantle time :

We really want to call dst_free() as soon as possible, even if sockets
still have dst in their cache.
dst_release() calls in free_fib_info_rcu() are not welcomed.

Root of the problem was that now we also cache output routes (in
nh_rth_output), we must use call_rcu() instead of call_rcu_bh() in
rt_free(), because output route lookups are done in process context.

Based on feedback and initial patch from David Miller (adding another
call_rcu_bh() call in fib, but it appears it was not the right fix)

I left the inet_sk_rx_dst_set() helper and added __rcu attributes
to nh_rth_output and nh_rth_input to better document what is going on in
this code.

Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2012-07-31 14:41:38 -07:00
..
Makefile
datagram.c
dev.c net: Make skb->skb_iif always track skb->dev 2012-07-23 16:36:27 -07:00
dev_addr_lists.c
drop_monitor.c
dst.c ipv4: Restore old dst_free() behavior. 2012-07-31 14:41:38 -07:00
ethtool.c
fib_rules.c
filter.c
flow.c
flow_dissector.c ipv6: add ipv6_addr_hash() helper 2012-07-18 11:28:46 -07:00
gen_estimator.c
gen_stats.c
iovec.c
link_watch.c
neighbour.c neigh: Convert over to dst_neigh_lookup_skb(). 2012-07-05 01:12:00 -07:00
net-sysfs.c
net-sysfs.h
net-traces.c
net_namespace.c net: Statically initialize init_net.dev_base_head 2012-07-18 13:32:27 -07:00
netevent.c
netpoll.c netpoll: move np->dev and np->dev_name init into __netpoll_setup() 2012-07-17 09:02:36 -07:00
netprio_cgroup.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2012-07-24 13:34:56 -07:00
pktgen.c
request_sock.c
rtnetlink.c ipv6: fix incorrect route 'expires' value passed to userspace 2012-07-29 23:18:31 -07:00
scm.c get rid of ->scm_work_list 2012-07-22 23:58:00 +04:00
secure_seq.c
skbuff.c skbuff: export skb_copy_ubufs 2012-07-22 12:39:33 -07:00
sock.c net: netprio_cgroup: rework update socket logic 2012-07-22 12:44:01 -07:00
sock_diag.c net: make sock diag per-namespace 2012-07-16 22:31:34 -07:00
stream.c
sysctl_net_core.c
timestamping.c
user_dma.c
utils.c