mirror_ubuntu-kernels/drivers/net
Jason A. Donenfeld a9e90d9931 wireguard: noise: separate receive counter from send counter
In "wireguard: queueing: preserve flow hash across packet scrubbing", we
were required to slightly increase the size of the receive replay
counter to something still fairly small, but an increase nonetheless.
It turns out that we can recoup some of the additional memory overhead
by splitting up the prior union type into two distinct types. Before, we
used the same "noise_counter" union for both sending and receiving, with
sending just using a simple atomic64_t, while receiving used the full
replay counter checker. This meant that most of the memory being
allocated for the sending counter was being wasted. Since the old
"noise_counter" type increased in size in the prior commit, now is a
good time to split up that union type into a distinct "noise_replay_
counter" for receiving and a boring atomic64_t for sending, each using
neither more nor less memory than required.

Also, since sometimes the replay counter is accessed without
necessitating additional accesses to the bitmap, we can reduce cache
misses by hoisting the always-necessary lock above the bitmap in the
struct layout. We also change a "noise_replay_counter" stack allocation
to kmalloc in a -DDEBUG selftest so that KASAN doesn't trigger a stack
frame warning.

All and all, removing a bit of abstraction in this commit makes the code
simpler and smaller, in addition to the motivating memory usage
recuperation. For example, passing around raw "noise_symmetric_key"
structs is something that really only makes sense within noise.c, in the
one place where the sending and receiving keys can safely be thought of
as the same type of object; subsequent to that, it's important that we
uniformly access these through keypair->{sending,receiving}, where their
distinct roles are always made explicit. So this patch allows us to draw
that distinction clearly as well.

Fixes: e7096c131e ("net: WireGuard secure network tunnel")
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2020-05-20 20:55:09 -07:00
..
appletalk
arcnet
bonding Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2020-03-12 22:34:48 -07:00
caif vhost: disable for OABI 2020-04-20 10:19:22 -04:00
can slcan: Don't transmit uninitialized stack data in padding 2020-04-01 11:22:35 -07:00
dsa net: dsa: mt7530: fix roaming from DSA user ports 2020-05-16 13:49:28 -07:00
ethernet net: bmac: Fix read of MAC address from ROM 2020-05-19 12:03:37 -07:00
fddi net: skfp: use new constant PCI_STATUS_ERROR_BITS 2020-03-04 14:21:00 -08:00
fjes
hamradio drivers: net: hamradio: Fix suspicious RCU usage warning in bpqether.c 2020-05-14 17:43:45 -07:00
hippi
hyperv hv_netvsc: Fix netvsc_start_xmit's return type 2020-05-01 15:24:46 -07:00
ieee802154
ipa net: ipa: don't be a hog in gsi_channel_poll() 2020-05-16 15:14:54 -07:00
ipvlan ipvlan: do not use cond_resched_rcu() in ipvlan_process_multicast() 2020-03-09 18:32:03 -07:00
netdevsim netdevsim: dev: Fix memory leak in nsim_dev_take_snapshot_write 2020-03-30 20:14:22 -07:00
phy net: phy: propagate an error back to the callers of phy_sfp_probe 2020-05-17 12:43:49 -07:00
plip
ppp pppoe: only process PADT targeted at local interfaces 2020-05-14 13:02:50 -07:00
slip Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2020-03-12 22:34:48 -07:00
team team: fix hang in team_mode_get() 2020-04-20 13:03:44 -07:00
usb r8152: support additional Microsoft Surface Ethernet Adapter variant 2020-05-19 12:45:09 -07:00
vmxnet3 vmxnet3: let core reject the unsupported coalescing parameters 2020-03-06 22:45:55 -08:00
wan SPDX patches for 5.7-rc1. 2020-04-03 13:12:26 -07:00
wimax wimax/i2400m: Fix potential urb refcnt leak 2020-04-18 15:00:22 -07:00
wireguard wireguard: noise: separate receive counter from send counter 2020-05-20 20:55:09 -07:00
wireless iwlwifi: pcie: handle QuZ configs with killer NICs as well 2020-05-08 13:09:17 +03:00
xen-netback
bareudp.c net: bareudp: avoid uninitialized variable warning 2020-05-07 17:28:18 -07:00
dummy.c
eql.c
geneve.c geneve: use the correct nlattr array in NL_SET_ERR_MSG_ATTR 2020-04-23 12:39:09 -07:00
gtp.c gtp: set NLM_F_MULTI flag in gtp_genl_dump_pdp() 2020-05-01 15:34:09 -07:00
ifb.c net: Fix CONFIG_NET_CLS_ACT=n and CONFIG_NFT_FWD_NETDEV={y, m} build 2020-03-25 12:24:33 -07:00
Kconfig Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2020-03-25 18:58:11 -07:00
LICENSE.SRC
loopback.c
macsec.c net: macsec: fix rtnl locking issue 2020-05-06 14:34:38 -07:00
macvlan.c macvlan: fix null dereference in macvlan_device_event() 2020-04-21 15:51:55 -07:00
macvtap.c
Makefile soc: qcom: ipa: support build of IPA code 2020-03-08 22:07:10 -07:00
mdio.c
mii.c
net_failover.c
netconsole.c
nlmon.c
ntb_netdev.c
rionet.c
sb1000.c
Space.c
sungem_phy.c
tap.c
thunderbolt.c
tun.c net: tun: record RX queue in skb before do_xdp_generic() 2020-04-12 20:58:24 -07:00
veth.c veth: rely on peer veth_rq for ndo_xdp_xmit accounting 2020-03-26 19:35:13 -07:00
virtio_net.c virtio_net: fix lockdep warning on 32 bit 2020-05-07 07:57:21 -07:00
vrf.c vrf: Fix IPv6 with qdisc and xfrm 2020-04-22 19:30:38 -07:00
vsockmon.c
vxlan.c vxlan: use the correct nlattr array in NL_SET_ERR_MSG_ATTR 2020-04-23 12:39:09 -07:00
xen-netfront.c