linux-kernelorg-stable/include/net
Eric Dumazet 61fb0d0168 ipv6: prevent possible fib6 leaks
At ipv6 route dismantle, fib6_drop_pcpu_from() is responsible
for finding all percpu routes and set their ->from pointer
to NULL, so that fib6_ref can reach its expected value (1).

The problem right now is that other cpus can still catch the
route being deleted, since there is no rcu grace period
between the route deletion and call to fib6_drop_pcpu_from()

This can leak the fib6 and associated resources, since no
notifier will take care of removing the last reference(s).

I decided to add another boolean (fib6_destroying) instead
of reusing/renaming exception_bucket_flushed to ease stable backports,
and properly document the memory barriers used to implement this fix.

This patch has been co-developped with Wei Wang.

Fixes: 93531c6743 ("net/ipv6: separate handling of FIB entries from dst based routes")
Signed-off-by: Eric Dumazet <edumazet@google.com>
Reported-by: syzbot <syzkaller@googlegroups.com>
Cc: Wei Wang <weiwan@google.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Martin Lau <kafai@fb.com>
Acked-by: Wei Wang <weiwan@google.com>
Acked-by: Martin KaFai Lau <kafai@fb.com>
Reviewed-by: David Ahern <dsahern@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2019-05-16 12:21:00 -07:00
..
9p
bluetooth Bluetooth: Ignore CC events not matching the last HCI command 2019-05-05 19:29:04 +02:00
caif
iucv
netfilter netfilter: add API to manage NAT helpers. 2019-04-30 14:19:55 +02:00
netns netfilter: conntrack: limit sysctl setting for boolean options 2019-04-30 14:18:56 +02:00
nfc nfc: nci: Potential off by one in ->pipes[] array 2019-04-06 15:05:07 -07:00
phonet phonet: fix building with clang 2019-02-21 16:23:56 -08:00
sctp Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2019-05-02 22:14:21 -04:00
tc_act net/sched: move police action structures to header 2019-05-05 21:49:24 -07:00
6lowpan.h
Space.h
act_api.h net/sched: let actions use RCU to access 'goto_chain' 2019-03-21 13:26:42 -07:00
addrconf.h ipv6: Move ipv6 stubs to a separate header file 2019-03-29 10:53:45 -07:00
af_ieee802154.h
af_rxrpc.h rxrpc: Make rxrpc_kernel_check_life() indicate if call completed 2019-04-12 16:57:23 -07:00
af_unix.h net: split out functions related to registering inflight socket files 2019-02-28 08:24:23 -07:00
af_vsock.h
ah.h
arp.h ipv4: Define __ipv4_neigh_lookup_noref when CONFIG_INET is disabled 2019-05-05 11:25:49 -07:00
atmclip.h
ax25.h
ax88796.h
bond_3ad.h
bond_alb.h
bond_options.h
bonding.h
bpf_sk_storage.h bpf: Introduce bpf sk local storage 2019-04-27 09:07:04 -07:00
busy_poll.h
calipso.h
cfg80211-wext.h
cfg80211.h Various updates, notably: 2019-04-26 16:05:52 -04:00
cfg802154.h
checksum.h
cipso_ipv4.h
cls_cgroup.h
codel.h
codel_impl.h
codel_qdisc.h
compat.h net: rework SIOCGSTAMP ioctl handling 2019-04-19 14:07:40 -07:00
datalink.h
dcbevent.h
dcbnl.h
devlink.h devlink: Change devlink health locking mechanism 2019-05-01 11:07:03 -04:00
dn.h
dn_dev.h
dn_fib.h
dn_neigh.h
dn_nsp.h
dn_route.h
dsa.h net: dsa: Remove the now unused DSA_SKB_CB_COPY() macro 2019-05-12 13:19:46 -07:00
dsfield.h
dst.h net: dst: remove gc leftovers 2019-03-21 13:39:25 -07:00
dst_cache.h
dst_metadata.h
dst_ops.h
erspan.h
esp.h
ethoc.h
failover.h
fib_notifier.h net: fib: drop include of module.h from fib_notifier.h 2019-04-22 21:50:53 -07:00
fib_rules.h
firewire.h
flow.h route: Add multipath_hash in flowi_common to make user-define hash 2019-02-27 12:50:17 -08:00
flow_dissector.h flow_dissector: switch kernel context to struct bpf_flow_dissector 2019-04-23 18:36:33 +02:00
flow_offload.h flow_offload: support CVLAN match 2019-05-16 12:02:42 -07:00
fou.h
fq.h
fq_impl.h mac80211: calculate hash for fq without holding fq->lock in itxq enqueue 2019-04-26 13:02:11 +02:00
garp.h
gen_stats.h
genetlink.h genetlink: optionally validate strictly/dumps 2019-04-27 17:07:22 -04:00
geneve.h net: Move the definition of the default Geneve udp port to public header file 2019-03-22 12:09:31 -07:00
gre.h
gro_cells.h
gtp.h
gue.h
hwbm.h
icmp.h net: Add __icmp_send helper. 2019-02-25 14:32:35 -08:00
ieee80211_radiotap.h wireless-drivers-next patches for 5.1 2019-02-22 12:56:24 -08:00
ieee802154_netdev.h
if_inet6.h
ife.h net: ife: drop include of module.h from net/ife.h 2019-04-22 21:50:53 -07:00
ila.h
inet6_connection_sock.h
inet6_hashtables.h
inet_common.h
inet_connection_sock.h tcp: change pingpong threshold to 3 2019-01-27 13:29:43 -08:00
inet_ecn.h
inet_frag.h net: remove unused struct inet_frag_queue.fragments field 2019-02-26 08:27:05 -08:00
inet_hashtables.h
inet_sock.h
inet_timewait_sock.h
inetpeer.h net: ipv4: use a dedicated counter for icmp_v4 redirect packets 2019-02-08 21:50:15 -08:00
ip.h Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2019-04-05 14:14:19 -07:00
ip6_checksum.h
ip6_fib.h ipv6: prevent possible fib6 leaks 2019-05-16 12:21:00 -07:00
ip6_route.h net: Change nhc_flags to unsigned char 2019-04-23 19:44:18 -07:00
ip6_tunnel.h
ip_fib.h ipv4: Move exception bucket to nh_common 2019-05-05 00:47:16 -07:00
ip_tunnels.h route: Add multipath_hash in flowi_common to make user-define hash 2019-02-27 12:50:17 -08:00
ip_vs.h ipvs: allow tunneling with gue encapsulation 2019-04-08 22:57:59 +02:00
ipcomp.h
ipconfig.h
ipv6.h
ipv6_frag.h ip6: fix skb leak in ip6frag_expire_frag_queue() 2019-05-05 10:40:24 -07:00
ipv6_stubs.h ipv6: Pass fib6_result to fib lookups 2019-04-17 23:10:47 -07:00
ipx.h
iw_handler.h
kcm.h
l3mdev.h ipvlan, l3mdev: fix broken l3s mode wrt local routes 2019-01-30 22:13:34 -08:00
lag.h
lapb.h
lib80211.h
llc.h
llc_c_ac.h
llc_c_ev.h
llc_c_st.h
llc_conn.h
llc_if.h
llc_pdu.h
llc_s_ac.h
llc_s_ev.h
llc_s_st.h
llc_sap.h
lwtunnel.h lwtunnel: Pass encap and encap type attributes to lwtunnel_fill_encap 2019-04-23 19:42:29 -07:00
mac80211.h Various updates, notably: 2019-04-26 16:05:52 -04:00
mac802154.h
mip6.h
mld.h
mpls.h
mpls_iptunnel.h
mrp.h
ncsi.h
ndisc.h ipv6: Add neighbor helpers that use the ipv6 stub 2019-04-08 15:22:40 -07:00
neighbour.h net ipv6: Prevent neighbor add if protocol is disabled on device 2019-04-17 23:19:07 -07:00
net_failover.h
net_namespace.h netns: provide pure entropy for net_hash_mix() 2019-03-28 17:00:45 -07:00
net_ratelimit.h
netevent.h
netlabel.h
netlink.h netlink: add validation of NLA_F_NESTED flag 2019-05-04 01:27:11 -04:00
netprio_cgroup.h
netrom.h net: netrom: Fix error cleanup path of nr_proto_init 2019-04-11 13:59:49 -07:00
nl802154.h
nsh.h
p8022.h
page_pool.h
ping.h
pkt_cls.h net/sched: remove block pointer from common offload structure 2019-05-07 12:23:40 -07:00
pkt_sched.h
pptp.h
protocol.h
psample.h net: psample: drop include of module.h from psample.h 2019-04-22 21:50:53 -07:00
psnap.h
raw.h
rawv6.h
red.h
regulatory.h
request_sock.h tcp: free request sock directly upon TFO or syncookies error 2019-03-19 14:13:01 -07:00
rose.h
route.h ipv4: Add helpers for neigh lookup for nexthop 2019-04-08 15:22:41 -07:00
rsi_91x.h
rtnetlink.h
rtnh.h net: Rename net/nexthop.h net/rtnh.h 2019-04-22 21:47:25 -07:00
sch_generic.h flow_dissector: switch kernel context to struct bpf_flow_dissector 2019-04-23 18:36:33 +02:00
scm.h
secure_seq.h
seg6.h
seg6_hmac.h
seg6_local.h
slhc_vj.h
smc.h net/smc: add smcd support to the pnet table 2019-02-21 10:34:37 -08:00
snmp.h
sock.h tcp: do not recycle cloned skbs 2019-05-15 09:22:41 -07:00
sock_reuseport.h
stp.h
strparser.h
switchdev.h switchdev: Remove unused transaction item queue 2019-03-01 21:35:19 -08:00
tcp.h net/tcp: use deferred jump label for TCP acked data hook 2019-05-09 11:13:57 -07:00
tcp_states.h
timewait_sock.h
tipc.h
tls.h net/tls: byte swap device req TCP seq no upon setting 2019-04-27 16:52:21 -04:00
transp_v6.h
tso.h
tun_proto.h
udp.h datagram: remove rendundant 'peeked' argument 2019-04-08 09:51:54 -07:00
udp_tunnel.h ipv6: Move ipv6 stubs to a separate header file 2019-03-29 10:53:45 -07:00
udplite.h
vsock_addr.h
vxlan.h net: Add IANA_VXLAN_UDP_PORT definition to vxlan header file 2019-03-22 12:09:31 -07:00
wext.h
wimax.h
x25.h
x25device.h
xdp.h
xdp_sock.h xsk: fix umem memory leak on cleanup 2019-03-16 01:27:51 +01:00
xfrm.h Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2019-05-07 22:03:58 -07:00