linux_dsm_epyc7002/drivers/net
Jason A. Donenfeld a5588604af wireguard: queueing: account for skb->protocol==0
We carry out checks to the effect of:

  if (skb->protocol != wg_examine_packet_protocol(skb))
    goto err;

By having wg_skb_examine_untrusted_ip_hdr return 0 on failure, this
means that the check above still passes in the case where skb->protocol
is zero, which is possible to hit with AF_PACKET:

  struct sockaddr_pkt saddr = { .spkt_device = "wg0" };
  unsigned char buffer[5] = { 0 };
  sendto(socket(AF_PACKET, SOCK_PACKET, /* skb->protocol = */ 0),
         buffer, sizeof(buffer), 0, (const struct sockaddr *)&saddr, sizeof(saddr));

Additional checks mean that this isn't actually a problem in the code
base, but I could imagine it becoming a problem later if the function is
used more liberally.

I would prefer to fix this by having wg_examine_packet_protocol return a
32-bit ~0 value on failure, which will never match any value of
skb->protocol, which would simply change the generated code from a mov
to a movzx. However, sparse complains, and adding __force casts doesn't
seem like a good idea, so instead we just add a simple helper function
to check for the zero return value. Since wg_examine_packet_protocol
itself gets inlined, this winds up not adding an additional branch to
the generated code, since the 0 return value already happens in a
mergable branch.

Reported-by: Fabian Freyer <fabianfreyer@radicallyopensecurity.com>
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2020-03-18 18:51:43 -07:00
..
appletalk
arcnet
bonding bonding/alb: make sure arp header is pulled before accessing it 2020-03-06 22:00:10 -08:00
caif net: caif: Use scnprintf() for avoiding potential buffer overflow 2020-03-15 17:06:22 -07:00
can can: add missing attribute validation for termination 2020-03-03 13:28:48 -08:00
dsa net: dsa: mv88e6xxx: Add missing mask of ATU occupancy register 2020-03-12 00:01:29 -07:00
ethernet net: ena: fix continuous keep-alive resets 2020-03-17 21:24:23 -07:00
fddi Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next 2020-01-28 16:02:33 -08:00
fjes Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next 2020-01-28 16:02:33 -08:00
hamradio Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2019-12-22 15:15:05 -08:00
hippi
hyperv hv_netvsc: Fix unwanted wakeup in netvsc_attach() 2020-02-23 16:32:37 -08:00
ieee802154
ipvlan ipvlan: do not use cond_resched_rcu() in ipvlan_process_multicast() 2020-03-09 18:32:03 -07:00
netdevsim net: netdevsim: Use scnprintf() for avoiding potential buffer overflow 2020-03-15 17:06:22 -07:00
phy net: phy: sfp-bus.c: get rid of docs warnings 2020-03-17 23:39:29 -07:00
plip
ppp pptp: support sockets bound to an interface 2020-01-15 23:13:09 +01:00
slip slip: make slhc_compress() more robust against malicious packets 2020-03-05 11:50:42 -08:00
team team: add missing attribute validation for array index 2020-03-03 13:28:48 -08:00
usb r8152: check disconnect status after long sleep 2020-02-29 21:19:41 -08:00
vmxnet3 vmxnet3: Remove always false conditional statement 2020-01-08 16:07:21 -08:00
wan ARM: SoC-related driver updates 2020-02-08 14:04:19 -08:00
wimax
wireguard wireguard: queueing: account for skb->protocol==0 2020-03-18 18:51:43 -07:00
wireless wlcore: remove stray plus sign 2020-03-12 18:48:14 +02:00
xen-netback net: xen-netback: hash.c: Use built-in RCU list checking 2020-01-17 10:57:22 +01:00
dummy.c
eql.c
geneve.c geneve: move debug check after netdev unregister 2020-03-15 00:42:35 -07:00
gtp.c gtp: use icmp_ndo_send helper 2020-02-13 14:19:00 -08:00
ifb.c
Kconfig USB/Thunderbolt/PHY driver updates for 5.6-rc1 2020-01-29 10:09:44 -08:00
LICENSE.SRC
loopback.c
macsec.c net: macsec: invoke mdo_upd_secy callback when mac address changed 2020-03-10 15:59:32 -07:00
macvlan.c macvlan: add cond_resched() during multicast processing 2020-03-09 18:02:19 -07:00
macvtap.c
Makefile USB/Thunderbolt/PHY driver updates for 5.6-rc1 2020-01-29 10:09:44 -08: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 net: tap: use skb_list_walk_safe helper for gso segments 2020-01-08 15:19:55 -08:00
thunderbolt.c
tun.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2020-01-26 10:40:21 +01:00
veth.c veth: ignore peer tx_dropped when counting local rx_dropped 2020-03-05 17:33:57 -08:00
virtio_net.c bpf, xdp: virtio_net use access ptr macro for xdp enable check 2020-01-27 11:16:25 +01:00
vrf.c
vsockmon.c
vxlan.c vxlan: check return value of gro_cells_init() 2020-03-18 16:43:12 -07:00
xen-netfront.c