linux/net/decnet
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
..
netfilter netlink: add netlink_kernel_cfg parameter to netlink_kernel_create 2012-06-29 16:46:02 -07:00
af_decnet.c net: cleanup unsigned to unsigned int 2012-04-15 12:44:40 -04:00
dn_dev.c net decnet: Convert to use register_net_sysctl 2012-04-20 21:22:29 -04:00
dn_fib.c netlink: Get rid of obsolete rtnetlink macros 2012-06-27 15:36:44 -07:00
dn_neigh.c decnet: Use neighbours privately in dn_route struct. 2012-07-05 01:12:14 -07:00
dn_nsp_in.c net: Convert net_ratelimit uses to net_<level>_ratelimited 2012-05-15 13:45:03 -04:00
dn_nsp_out.c net: Remove casts to same type 2012-06-04 11:45:11 -04:00
dn_route.c ipv4: Restore old dst_free() behavior. 2012-07-31 14:41:38 -07:00
dn_rules.c net: cleanup unsigned to unsigned int 2012-04-15 12:44:40 -04:00
dn_table.c decnet: Do not use RTA_PUT() macros 2012-06-27 15:36:44 -07:00
dn_timer.c decnet: proper socket refcounting 2011-11-26 15:49:07 -05:00
Kconfig [NET]: Rethink mark field in struct flowi 2006-12-02 21:21:39 -08:00
Makefile Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
README Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
sysctl_net_decnet.c net decnet: Convert to use register_net_sysctl 2012-04-20 21:22:29 -04:00
TODO Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00

                       Linux DECnet Project
                      ======================

The documentation for this kernel subsystem is available in the
Documentation/networking subdirectory of this distribution and also
on line at http://www.chygwyn.com/DECnet/

Steve Whitehouse <SteveW@ACM.org>