linux/include/net
Willem de Bruijn fdd60d80c4 udp: correct reuseport selection with connected sockets
[ Upstream commit acdcecc612 ]

UDP reuseport groups can hold a mix unconnected and connected sockets.
Ensure that connections only receive all traffic to their 4-tuple.

Fast reuseport returns on the first reuseport match on the assumption
that all matches are equal. Only if connections are present, return to
the previous behavior of scoring all sockets.

Record if connections are present and if so (1) treat such connected
sockets as an independent match from the group, (2) only return
2-tuple matches from reuseport and (3) do not return on the first
2-tuple reuseport match to allow for a higher scoring match later.

New field has_conns is set without locks. No other fields in the
bitmap are modified at runtime and the field is only ever set
unconditionally, so an RMW cannot miss a change.

Fixes: e32ea7e747 ("soreuseport: fast reuseport UDP socket selection")
Link: http://lkml.kernel.org/r/CA+FuTSfRP09aJNYRt04SS6qj22ViiOEWaWmLAwX0psk8-PGNxw@mail.gmail.com
Signed-off-by: Willem de Bruijn <willemb@google.com>
Acked-by: Paolo Abeni <pabeni@redhat.com>
Acked-by: Craig Gallek <kraig@google.com>
Signed-off-by: Willem de Bruijn <willemb@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2019-09-21 07:16:43 +02:00
..
9p 9p: Add refcount to p9_req_t 2019-07-03 13:14:42 +02:00
bluetooth Bluetooth: Align minimum encryption key size for LE and BR/EDR connections 2019-06-25 11:36:01 +08:00
caif
iucv
netfilter netfilter: nf_tables: use-after-free in failing rule with bound set 2019-09-10 10:33:42 +01:00
netns tcp: add tcp_min_snd_mss sysctl 2019-06-17 19:51:56 +02:00
nfc nfc: nci: Potential off by one in ->pipes[] array 2019-05-16 19:41:27 +02:00
phonet phonet: fix building with clang 2019-03-23 20:09:51 +01:00
sctp sctp: avoid running the sctp state machine recursively 2019-05-05 14:42:39 +02:00
tc_act net/sched: don't dereference a->goto_chain to read the chain index 2019-05-04 09:20:18 +02:00
6lowpan.h
act_api.h net_sched: fix a NULL pointer deref in ipt action 2019-09-10 10:33:39 +01:00
addrconf.h
af_ieee802154.h
af_rxrpc.h
af_unix.h
af_vsock.h
ah.h
arp.h ipv4: Define __ipv4_neigh_lookup_noref when CONFIG_INET is disabled 2019-06-11 12:20:57 +02:00
atmclip.h
ax25.h ax25: fix possible use-after-free 2019-02-23 09:07:27 +01:00
ax88796.h
bond_3ad.h
bond_alb.h
bond_options.h
bonding.h bonding: avoid possible dead-lock 2018-09-26 20:22:19 -07:00
busy_poll.h
calipso.h
cfg80211-wext.h
cfg80211.h {nl,mac}80211: fix interface combinations on crypto controlled devices 2019-09-16 08:21:42 +02:00
cfg802154.h
checksum.h
cipso_ipv4.h
cls_cgroup.h
codel_impl.h
codel_qdisc.h
codel.h
compat.h
datalink.h
dcbevent.h
dcbnl.h
devlink.h devlink: Add helper function for safely copy string param 2018-10-10 10:19:10 -07:00
dn_dev.h
dn_fib.h
dn_neigh.h
dn_nsp.h
dn_route.h
dn.h
dsa.h
dsfield.h
dst_cache.h
dst_metadata.h
dst_ops.h
dst.h net: make skb_dst_force return true when dst is refcounted 2019-07-28 08:29:24 +02:00
erspan.h
esp.h
ethoc.h
failover.h
fib_notifier.h
fib_rules.h
firewire.h
flow_dissector.h
flow.h
fou.h
fq_impl.h
fq.h
garp.h
gen_stats.h
genetlink.h
geneve.h
gre.h
gro_cells.h
gtp.h
gue.h
hwbm.h
icmp.h net: Add __icmp_send helper. 2019-03-10 07:17:19 +01:00
ieee80211_radiotap.h
ieee802154_netdev.h
if_inet6.h
ife.h
ila.h
inet_common.h
inet_connection_sock.h
inet_ecn.h
inet_frag.h net: IP defrag: encapsulate rbtree defrag code into callable functions 2019-04-27 09:36:33 +02:00
inet_hashtables.h
inet_sock.h inet: make sure to grab rcu_read_lock before using ireq->ireq_opt 2018-10-02 15:52:12 -07:00
inet_timewait_sock.h
inet6_connection_sock.h
inet6_hashtables.h
inetpeer.h net: ipv4: use a dedicated counter for icmp_v4 redirect packets 2019-02-23 09:07:24 +01:00
ip_fib.h net: ipv4: Fix memory leak in network namespace dismantle 2019-01-31 08:14:32 +01:00
ip_tunnels.h ip: validate header length on virtual device xmit 2019-01-09 17:38:31 +01:00
ip_vs.h ipvs: fix tinfo memory leak in start_sync_thread 2019-07-26 09:14:11 +02:00
ip.h vrf: check accept_source_route on the original netdevice 2019-04-17 08:38:42 +02:00
ip6_checksum.h
ip6_fib.h ipv6: fix the check before getting the cookie in rt6_get_cookie 2019-06-11 12:20:48 +02:00
ip6_route.h
ip6_tunnel.h ip6_tunnel: allow not to count pkts on tstats by passing dev as NULL 2019-07-14 08:11:14 +02:00
ipcomp.h
ipconfig.h
ipv6_frag.h ip6: fix skb leak in ip6frag_expire_frag_queue() 2019-07-10 09:53:46 +02:00
ipv6.h
ipx.h
iw_handler.h
kcm.h
l3mdev.h ipvlan, l3mdev: fix broken l3s mode wrt local routes 2019-02-06 17:30:06 +01:00
lag.h
lapb.h
lib80211.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
llc.h
lwtunnel.h
mac80211.h
mac802154.h
mip6.h
mld.h
mpls_iptunnel.h
mpls.h
mrp.h
ncsi.h
ndisc.h
neighbour.h neighbour: Avoid writing before skb->head in neigh_hh_output() 2018-12-17 09:24:27 +01:00
net_failover.h
net_namespace.h netns: provide pure entropy for net_hash_mix() 2019-04-17 08:38:40 +02:00
net_ratelimit.h
netevent.h
netlabel.h
netlink.h netlink: fix typo in nla_parse_nested() comment 2018-09-29 11:48:26 -07:00
netprio_cgroup.h
netrom.h net: netrom: Fix error cleanup path of nr_proto_init 2019-05-02 09:58:57 +02:00
nexthop.h
nl802154.h
nsh.h
p8022.h
page_pool.h
ping.h
pkt_cls.h
pkt_sched.h
pptp.h
protocol.h
psample.h net: sched: act_sample: fix psample group handling on overwrite 2019-09-10 10:33:38 +01:00
psnap.h
raw.h
rawv6.h
red.h
regulatory.h
request_sock.h
rose.h
route.h
rsi_91x.h
rtnetlink.h
sch_generic.h net: sched: put back q.qlen into a single location 2019-03-10 07:17:16 +01:00
scm.h
secure_seq.h
seg6_hmac.h
seg6_local.h
seg6.h
slhc_vj.h
smc.h
snmp.h
sock_reuseport.h udp: correct reuseport selection with connected sockets 2019-09-21 07:16:43 +02:00
sock.h packets: Always register packet sk in the same order 2019-04-03 06:26:17 +02:00
Space.h
stp.h
strparser.h
switchdev.h
tcp_states.h
tcp.h tcp: fix tcp_set_congestion_control() use from bpf hook 2019-07-28 08:29:26 +02:00
timewait_sock.h
tipc.h
tls.h net/tls: make sure offload also gets the keys wiped 2019-07-28 08:29:27 +02:00
transp_v6.h
tso.h
tun_proto.h
udp_tunnel.h
udp.h
udplite.h
vsock_addr.h
vxlan.h
wext.h
wimax.h
x25.h
x25device.h
xdp_sock.h xsk: fix umem memory leak on cleanup 2019-05-04 09:20:12 +02:00
xdp.h
xfrm.h xfrm: Honor original L3 slave device in xfrmi policy lookup 2019-05-25 18:23:41 +02:00