linux/net/ipv6
YOSHIFUJI Hideaki 85040bcb46 [IPV6] ADDRLABEL: Fix double free on label deletion.
If an entry is being deleted because it has only one reference, 
we immediately delete it and blindly register the rcu handler for it,
This results in oops by double freeing that object.

This patch fixes it by consolidating the code paths for the deletion;
let its rcu handler delete the object if it has no more reference.

Bug was found by Mitsuru Chinen <mitch@linux.vnet.ibm.com>

Signed-off-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
2008-01-28 15:46:02 -08:00
..
netfilter [NETNS][FRAGS]: Make the LRU list per namespace. 2008-01-28 15:10:39 -08:00
addrconf_core.c
addrconf.c [IPV6] ADDRCONF: Sparse: Make inet6_dump_addr() code paths more straight-forward. 2008-01-28 15:10:28 -08:00
addrlabel.c [IPV6] ADDRLABEL: Fix double free on label deletion. 2008-01-28 15:46:02 -08:00
af_inet6.c [NETNS][FRAGS]: Move ctl tables around. 2008-01-28 15:10:34 -08:00
ah6.c [IPSEC]: Move all calls to xfrm_audit_state_icvfail to xfrm_input 2008-01-28 15:00:10 -08:00
anycast.c [NETNS][IPV6]: inet6_addr - check ipv6 address per namespace 2008-01-28 15:01:44 -08:00
datagram.c [NETNS][IPV6]: inet6_addr - check ipv6 address per namespace 2008-01-28 15:01:44 -08:00
esp6.c [IPSEC]: Move all calls to xfrm_audit_state_icvfail to xfrm_input 2008-01-28 15:00:10 -08:00
exthdrs_core.c
exthdrs.c [NETNS][IPV6]: inet6_addr - make ipv6_chk_home_addr namespace aware 2008-01-28 15:01:46 -08:00
fib6_rules.c [NETNS]: FIB rules API cleanup. 2008-01-28 15:08:13 -08:00
icmp.c [NETNS][IPV6]: inet6_addr - check ipv6 address per namespace 2008-01-28 15:01:44 -08:00
inet6_connection_sock.c
inet6_hashtables.c [NET]: prot_inuse cleanups and optimizations 2008-01-28 15:00:36 -08:00
ip6_fib.c [NETNS]: Add netns to nl_info structure. 2008-01-28 15:01:29 -08:00
ip6_flowlabel.c [NET]: Add some acquires/releases sparse annotations. 2008-01-28 15:00:31 -08:00
ip6_input.c
ip6_output.c [NETNS][IPV6]: inet6_addr - ipv6_get_ifaddr namespace aware 2008-01-28 15:01:45 -08:00
ip6_tunnel.c [NETNS]: Add namespace parameter to ip_route_output_key. 2008-01-28 15:11:07 -08:00
ipcomp6.c
ipv6_sockglue.c [NET]: prot_inuse cleanups and optimizations 2008-01-28 15:00:36 -08:00
Kconfig
Makefile
mcast.c [NET]: Add some acquires/releases sparse annotations. 2008-01-28 15:00:31 -08:00
mip6.c
ndisc.c [IPV6] NDISC: Sparse: Use different variable name for local use. 2008-01-28 15:10:28 -08:00
netfilter.c
proc.c [NETNS][FRAGS]: Make the mem counter per-namespace. 2008-01-28 15:10:36 -08:00
protocol.c
raw.c [NETNS][RAW]: Create the /proc/net/raw(6) in each namespace. 2008-01-28 15:02:07 -08:00
reassembly.c [NETNS][FRAGS]: Make the pernet subsystem for fragments. 2008-01-28 15:10:40 -08:00
route.c [NETNS][DST] dst: pass the dst_ops as parameter to the gc functions 2008-01-28 15:02:46 -08:00
sit.c [NETNS]: Add namespace parameter to ip_route_output_key. 2008-01-28 15:11:07 -08:00
sysctl_net_ipv6.c [NETNS][FRAGS]: Move ctl tables around. 2008-01-28 15:10:34 -08:00
tcp_ipv6.c
tunnel6.c
udp_impl.h [IPV6] UDPLITE: Sparse: Declare non-static symbols in header. 2008-01-28 15:10:26 -08:00
udp.c [IPV6] UDP,UDPLITE: Sparse: {__udp6_lib,udp,udplite}_err() are of void. 2008-01-28 15:10:25 -08:00
udplite.c [IPV6] UDP,UDPLITE: Sparse: {__udp6_lib,udp,udplite}_err() are of void. 2008-01-28 15:10:25 -08:00
xfrm6_input.c
xfrm6_mode_beet.c
xfrm6_mode_ro.c
xfrm6_mode_transport.c
xfrm6_mode_tunnel.c
xfrm6_output.c
xfrm6_policy.c [NETNS][DST] dst: pass the dst_ops as parameter to the gc functions 2008-01-28 15:02:46 -08:00
xfrm6_state.c
xfrm6_tunnel.c