android_kernel_xiaomi_sm7250/include/net
Jason A. Donenfeld a75da5af3b UPSTREAM: wireguard: device: reset peer src endpoint when netns exits
commit 20ae1d6aa159eb91a9bf09ff92ccaa94dbea92c2 upstream.

Each peer's endpoint contains a dst_cache entry that takes a reference
to another netdev. When the containing namespace exits, we take down the
socket and prevent future sockets from being created (by setting
creating_net to NULL), which removes that potential reference on the
netns. However, it doesn't release references to the netns that a netdev
cached in dst_cache might be taking, so the netns still might fail to
exit. Since the socket is gimped anyway, we can simply clear all the
dst_caches (by way of clearing the endpoint src), which will release all
references.

However, the current dst_cache_reset function only releases those
references lazily. But it turns out that all of our usages of
wg_socket_clear_peer_endpoint_src are called from contexts that are not
exactly high-speed or bottle-necked. For example, when there's
connection difficulty, or when userspace is reconfiguring the interface.
And in particular for this patch, when the netns is exiting. So for
those cases, it makes more sense to call dst_release immediately. For
that, we add a small helper function to dst_cache.

This patch also adds a test to netns.sh from Hangbin Liu to ensure this
doesn't regress.

Tested-by: Hangbin Liu <liuhangbin@gmail.com>
Reported-by: Xiumei Mu <xmu@redhat.com>
Cc: Toke Høiland-Jørgensen <toke@redhat.com>
Cc: Paolo Abeni <pabeni@redhat.com>
Fixes: 900575aa33a3 ("wireguard: device: avoid circular netns references")
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Signed-off-by: UtsavBalar1231 <utsavbalar1231@gmail.com>
Change-Id: I0ec696b0759919cc59965859882cf814d8fe7a15
2022-11-12 11:22:35 +00:00
..
9p 9p: Add refcount to p9_req_t 2019-07-03 13:14:42 +02:00
bluetooth Bluetooth: L2CAP: Fix use-after-free caused by l2cap_chan_put 2022-08-11 12:48:38 +02:00
caif net: caif: add proper error handling 2021-06-10 13:24:06 +02:00
iucv Revert changes to convert to ->poll_mask() and aio IOCB_CMD_POLL 2018-06-28 10:40:47 -07:00
netfilter netfilter: conntrack: re-fetch conntrack after insertion 2022-06-06 08:24:21 +02:00
netns net: Port samsung MPTCP modifications from SM-N986B 2022-11-12 11:19:58 +00:00
nfc NFC: add NCI_UNREG flag to eliminate the race 2021-12-01 09:27:43 +01:00
phonet phonet: fix building with clang 2019-03-23 20:09:51 +01:00
sctp sctp: use call_rcu to free endpoint 2022-01-05 12:34:58 +01:00
tc_act net/sched: act_pedit: really ensure the skb is writable 2022-05-18 09:42:48 +02:00
6lowpan.h
act_api.h net sched: fix reporting the first-time use timestamp 2020-06-03 08:19:15 +02:00
addrconf.h This is the 4.19.139 stable release 2020-08-11 17:03:22 +02:00
af_ieee802154.h ieee802154: add rx LQI from userspace 2018-07-13 12:18:18 -04:00
af_rxrpc.h rxrpc: Push iov_iter up from rxrpc_kernel_recv_data() to caller 2018-08-03 12:46:20 -07:00
af_unix.h net: split out functions related to registering inflight socket files 2021-12-14 10:20:10 +05:30
af_vsock.h vsock: split dwork to avoid reinitializations 2018-08-07 12:39:13 -07:00
ah.h
arp.h ipv4: Invalidate neighbour for broadcast address upon address addition 2022-04-15 14:15:01 +02:00
atmclip.h
ax25.h ax25: fix reference count leaks of ax25_dev 2022-04-27 13:39:45 +02:00
ax88796.h net-next: ax88796: add interrupt status callback to platform data 2018-04-19 16:11:11 -04:00
bond_3ad.h bonding: fix data-races around agg_select_timer 2022-02-23 11:58:39 +01:00
bond_alb.h bonding: make tx_rebalance_counter an atomic 2021-12-14 10:18:05 +01:00
bond_options.h
bonding.h bonding: wait for sysfs kobject destruction before freeing struct slave 2020-12-08 10:18:53 +01:00
busy_poll.h net: Fix a data-race around sysctl_net_busy_poll. 2022-09-05 10:26:30 +02:00
calipso.h
cfg80211-wext.h
cfg80211.h BACKPORT: UPSTREAM: cfg80211: separate get channel number from ies 2022-11-12 11:20:51 +00:00
cfg802154.h
checksum.h openvswitch: Fix setting ipv6 fields causing hw csum failure 2022-03-02 11:38:12 +01:00
cipso_ipv4.h
cls_cgroup.h
cnss2.h cnss2: Add CNSS_BUS_EVENT to report bus info 2021-04-20 10:26:23 +08:00
cnss_nl.h cnss_nl: Add new attributes for cld80211 attr list 2020-03-11 02:03:45 -07:00
cnss_prealloc.h net: cnss_prealloc: Add snapshot of cnss_prealloc driver 2019-01-15 15:37:49 -08:00
cnss_utils.h net: cnss_utils: Add snapshot of cnss_utils driver 2019-01-15 15:37:19 -08:00
codel_impl.h
codel_qdisc.h
codel.h
compat.h net: remove compat_sys_*() prototypes from net/compat.h 2018-04-02 20:16:17 +02:00
datalink.h
dcbevent.h
dcbnl.h net: dcb: Add priority-to-DSCP map getters 2018-07-27 13:17:50 -07:00
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 decnet: Move dn_next into decnet route structure. 2017-11-30 09:54:25 -05:00
dn.h
dsa.h net: dsa: read mac address from DT for slave device 2020-11-10 12:36:02 +01:00
dsfield.h
dst_cache.h UPSTREAM: wireguard: device: reset peer src endpoint when netns exits 2022-11-12 11:22:35 +00:00
dst_metadata.h net: fix a memleak when uncloning an skb dst and its metadata 2022-02-16 12:51:46 +01:00
dst_ops.h net: add bool confirm_neigh parameter for dst_ops.update_pmtu 2020-01-04 19:13:37 +01:00
dst.h net: Added pointer check for dst->ops->neigh_lookup in dst_neigh_lookup_skb 2020-07-22 09:31:59 +02:00
erspan.h erspan: set bso bit based on mirrored packet's len 2018-05-20 18:31:42 -04:00
esp.h esp: limit skb_page_frag_refill use to a single page 2022-07-12 16:29:00 +02:00
ethoc.h inet: whitespace cleanup 2018-02-28 11:43:28 -05:00
failover.h net: Introduce generic failover module 2018-05-28 22:59:54 -04:00
fib_notifier.h
fib_rules.h fib: add missing attribute validation for tun_id 2020-03-18 07:14:14 +01:00
firewire.h
flow_dissector.h net/sched: flower: fix parsing of ethertype following VLAN header 2022-04-20 09:12:48 +02:00
flow.h xfrm: Remove xfrmi interface ID from flowi 2018-07-20 10:14:41 +02:00
fou.h
fq_impl.h net/fq_impl: Switch to kvmalloc() for memory allocation 2019-12-05 09:19:45 +01:00
fq.h net/flow_dissector: switch to siphash 2019-11-10 11:27:54 +01:00
garp.h
gen_stats.h net: core: protect rate estimator statistics pointer with lock 2018-08-11 12:37:10 -07:00
genetlink.h Revert "genetlink: remove genl_bind" 2020-07-23 10:12:18 -07:00
geneve.h
gre.h net: GRE: Add is_gretap_dev, is_ip6gretap_dev 2018-02-27 14:46:26 -05:00
gro_cells.h
gtp.h
gue.h fou: fix some member types in guehdr 2017-12-11 14:10:06 -05:00
hwbm.h
icmp.h net: icmp: pass zeroed opts from icmp{,v6}_ndo_send before sending 2021-03-04 09:39:59 +01:00
ieee80211_radiotap.h radiotap: add structs for HE 2018-06-15 14:04:00 +02:00
ieee802154_netdev.h net: ieee802154: return -EINVAL for unknown addr type 2022-10-26 13:19:42 +02:00
if_inet6.h ipv6: fix locking issues with loops over idev->addr_list 2022-06-14 16:59:14 +02:00
ife.h net: sched: ife: handle malformed tlv length 2018-04-22 21:12:00 -04:00
ila.h
inet6_connection_sock.h
inet6_hashtables.h
inet_common.h net: Port samsung MPTCP modifications from SM-N986B 2022-11-12 11:19:58 +00:00
inet_connection_sock.h net: Port samsung MPTCP modifications from SM-N986B 2022-11-12 11:19:58 +00:00
inet_ecn.h sched: consistently handle layer3 header accesses in the presence of VLANs 2020-07-22 09:32:00 +02:00
inet_frag.h net: IP defrag: encapsulate rbtree defrag code into callable functions 2019-04-27 09:36:33 +02:00
inet_hashtables.h secure_seq: use the 64 bits of the siphash for port offset calculation 2022-06-06 08:24:20 +02:00
inet_sock.h net: Port samsung MPTCP modifications from SM-N986B 2022-11-12 11:19:58 +00:00
inet_timewait_sock.h net-tcp: remove useless tw_timeout field 2018-06-05 10:45:24 -04:00
inetpeer.h net: ipv4: use a dedicated counter for icmp_v4 redirect packets 2019-02-23 09:07:24 +01:00
ip6_checksum.h
ip6_fib.h ipv6: annotate accesses to fn->fn_sernum 2022-02-08 18:23:09 +01:00
ip6_route.h net: ipv6: fix returned variable type in ip6_skb_dst_mtu 2021-08-12 13:19:39 +02:00
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
ip_fib.h net: ipv4: Fix memory leak in network namespace dismantle 2019-01-31 08:14:32 +01:00
ip_tunnels.h This is the 4.19.160 stable release 2020-11-24 14:57:17 +01:00
ip_vs.h ipvs: allow connection reuse for unconfirmed conntrack 2020-08-19 08:14:56 +02:00
ip.h Merge remote-tracking branch 'aosp/android-4.19-stable' into android12-base 2022-08-03 19:42:38 +05:30
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 Merge android-4.19-stable.125 (a483478) into msm-4.19 2020-09-20 23:45:10 +05:30
ipx.h bonding/alb: properly access headers in bond_alb_xmit() 2020-02-11 04:34:14 -08:00
iw_handler.h net: Spelling s/stucture/structure/ 2018-03-27 09:51:23 +02:00
kcm.h
l3mdev.h ipvlan, l3mdev: fix broken l3s mode wrt local routes 2019-02-06 17:30:06 +01:00
lag.h net: Add lag.h, net_lag_port_dev_txable() 2018-07-11 23:10:19 -07:00
lapb.h
lib80211.h
llc_c_ac.h
llc_c_ev.h
llc_c_st.h
llc_conn.h llc: fix sk_buff leak in llc_conn_service() 2019-11-06 13:06:23 +01:00
llc_if.h
llc_pdu.h net: llc: fix skb_over_panic 2021-08-04 12:23:46 +02:00
llc_s_ac.h
llc_s_ev.h
llc_s_st.h
llc_sap.h
llc.h llc: fix out-of-bound array index in llc_sk_dev_hash() 2021-11-26 11:36:16 +01:00
lwtunnel.h net: Move ipv4 set_lwt_redirect helper to lwtunnel 2018-02-14 14:43:32 -05:00
mac80211.h ANDROID: GKI: cfg80211: add ABI changes for CONFIG_NL80211_TESTMODE 2020-06-23 10:00:16 -07:00
mac802154.h
mip6.h
mld.h
mpls_iptunnel.h
mpls.h
mptcp_v4.h net: Port samsung MPTCP modifications from SM-N986B 2022-11-12 11:19:58 +00:00
mptcp_v6.h net: Port samsung MPTCP modifications from SM-N986B 2022-11-12 11:19:58 +00:00
mptcp.h net: Port samsung MPTCP modifications from SM-N986B 2022-11-12 11:19:58 +00:00
mrp.h
ncsi.h
ndisc.h UPSTREAM: ipv6: ndisc: RFC-ietf-6man-ra-pref64-09 is now published as RFC8781 2020-11-16 07:43:08 +01:00
neighbour.h net: add annotations on hh->hh_len lockless accesses 2020-01-09 10:19:09 +01:00
net_failover.h net: Introduce net_failover driver 2018-05-28 22:59:54 -04:00
net_namespace.h net: Port samsung MPTCP modifications from SM-N986B 2022-11-12 11:19:58 +00:00
net_ratelimit.h
netevent.h net: ipv4: Notify about changes to ip_forward_update_priority 2018-08-01 09:52:30 -07:00
netlabel.h
netlink.h netlink: add ethernet address policy types 2020-11-16 22:56:00 -08: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 net: fix rtnh_ok() 2018-04-07 22:32:31 -04:00
nl802154.h net: ieee802154: handle iftypes as u32 2021-12-01 09:27:42 +01:00
nsh.h
p8022.h
page_pool.h xdp: introduce xdp_return_frame_rx_napi 2018-05-24 18:36:15 -07:00
ping.h ipv{4,6}/ping: simplify proc file creation 2018-05-16 07:23:35 +02:00
pkt_cls.h net_sched: fix ops->bind_class() implementations 2020-02-01 09:37:06 +00:00
pkt_sched.h Merge tag 'ASB-2022-01-05_4.19-stable' of https://github.com/aosp-mirror/kernel_common into android12-base 2022-02-26 20:18:58 +05:30
pptp.h
protocol.h
psample.h psample: Add a fwd declaration for skbuff 2021-08-26 08:36:38 -04:00
psnap.h
raw.h ipv{4,6}/raw: simplify ѕeq_file code 2018-05-16 07:23:35 +02:00
rawv6.h
red.h sch_red: fix off-by-one checks in red_check_params() 2021-04-14 08:22:34 +02:00
regulatory.h cfg80211: make wmm_rule part of the reg_rule structure 2018-08-28 11:11:47 +02:00
request_sock.h net: add {READ|WRITE}_ONCE() annotations on ->rskq_accept_head 2020-01-27 14:51:18 +01:00
rmnet_config.h spdx: Modify spdx tag from GPL-2.0 to GPL-2.0-only 2018-12-10 11:09:45 -08:00
rose.h proc: introduce proc_create_seq{,_data} 2018-05-16 07:23:35 +02:00
route.h net/ipv4: Add support for specifying metric of connected routes 2018-05-29 10:12:45 -04:00
rsi_91x.h Bluetooth: btrsi: add new rsi bluetooth driver 2018-03-13 18:37:02 +02:00
rtnetlink.h Revert "can: dev: Move device back to init netns on owning netns delete" 2021-04-07 11:44:51 +02:00
sch_generic.h Merge 4.19.226 into android-4.19-stable 2022-02-01 10:03:27 +01:00
scm.h pids: Compute task_tgid using signal->leader_pid 2018-07-21 10:43:12 -05:00
secure_seq.h secure_seq: use the 64 bits of the siphash for port offset calculation 2022-06-06 08:24:20 +02:00
seg6_hmac.h rhashtable: split rhashtable.h 2018-06-22 13:43:27 +09:00
seg6_local.h bpf: add End.DT6 action to bpf_lwt_seg6_action helper 2018-07-31 09:22:48 +02:00
seg6.h rhashtable: split rhashtable.h 2018-06-22 13:43:27 +09:00
slhc_vj.h slip: Check if rstate is initialized before uncompressing 2018-04-11 10:33:46 -04:00
smc.h net/smc: add pnetid support for SMC-D and ISM 2018-06-30 20:42:25 +09:00
snmp.h
sock_reuseport.h udp: correct reuseport selection with connected sockets 2019-09-21 07:16:43 +02:00
sock.h net: Port samsung MPTCP modifications from SM-N986B 2022-11-12 11:19:58 +00:00
Space.h net/mac89x0: Convert to platform_driver 2018-03-01 21:21:36 -05:00
stp.h
strparser.h strparser: Add __strp_unpause and use it in ktls. 2018-06-06 14:07:53 -04:00
switchdev.h switchdev: Add fdb.added_by_user to switchdev notifications 2018-05-03 13:46:47 -04:00
tcp_states.h net: Port samsung MPTCP modifications from SM-N986B 2022-11-12 11:19:58 +00:00
tcp.h net: Port samsung MPTCP modifications from SM-N986B 2022-11-12 11:19:58 +00:00
timewait_sock.h
tipc.h flow_dissector: do not rely on implicit casts 2018-05-08 00:02:41 -04:00
tls.h net/tls: Protect from calling tls_dev_del for TLS RX twice 2020-12-08 10:18:52 +01:00
transp_v6.h net: Port samsung MPTCP modifications from SM-N986B 2022-11-12 11:19:58 +00:00
tso.h
tun_proto.h
udp_tunnel.h udp: implement complete book-keeping for encap_needed 2019-02-06 10:12:25 -07:00
udp.h udp: Avoid post-GRO UDP checksum recalculation 2019-06-18 11:16:21 -06:00
udplite.h udplite: fix partial checksum initialization 2018-02-16 15:57:42 -05:00
virt_wifi.h Cuttlefish Wifi: Add data ops in virt_wifi driver for scan data simulation 2019-10-25 14:34:00 +08:00
vsock_addr.h
vxlan.h vxlan: add ttl inherit support 2018-04-17 13:53:13 -04:00
wext.h lift handling of SIOCIW... out of dev_ioctl() 2018-01-24 19:13:45 -05:00
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 xdp: Helper function to clear kernel pointers in xdp_frame 2018-08-10 16:12:20 +02:00
xfrm.h This is the 4.19.238 stable release 2022-04-18 09:57:50 +02:00