linux-kernelorg-stable/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
Kconfig
Makefile
addrconf.c [IPV6] ADDRCONF: Sparse: Make inet6_dump_addr() code paths more straight-forward. 2008-01-28 15:10:28 -08:00
addrconf_core.c
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
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
exthdrs.c [NETNS][IPV6]: inet6_addr - make ipv6_chk_home_addr namespace aware 2008-01-28 15:01:46 -08:00
exthdrs_core.c
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
ip6_fib.c [NETNS]: Add netns to nl_info structure. 2008-01-28 15:01:29 -08:00
ip6_flowlabel.c
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
mcast.c
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.c [IPV6] UDP,UDPLITE: Sparse: {__udp6_lib,udp,udplite}_err() are of void. 2008-01-28 15:10:25 -08:00
udp_impl.h [IPV6] UDPLITE: Sparse: Declare non-static symbols in header. 2008-01-28 15:10:26 -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