196f3d586f
5.4.102 backported a lot of stuff that our WireGuard backport already did, in addition to other patches we had, so those patches were removed from that part of the series. In the process other patches were refreshed or reworked to account for upstream changes. This commit involved `update_kernel.sh -v -u 5.4`. Cc: John Audia <graysky@archlinux.us> Cc: David Bauer <mail@david-bauer.net> Cc: Petr Štetiar <ynezz@true.cz> Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
37 lines
1.4 KiB
Diff
37 lines
1.4 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: "Jason A. Donenfeld" <Jason@zx2c4.com>
|
|
Date: Mon, 29 Jun 2020 19:06:20 -0600
|
|
Subject: [PATCH] wireguard: implement header_ops->parse_protocol for AF_PACKET
|
|
|
|
commit 01a4967c71c004f8ecad4ab57021348636502fa9 upstream.
|
|
|
|
WireGuard uses skb->protocol to determine packet type, and bails out if
|
|
it's not set or set to something it's not expecting. For AF_PACKET
|
|
injection, we need to support its call chain of:
|
|
|
|
packet_sendmsg -> packet_snd -> packet_parse_headers ->
|
|
dev_parse_header_protocol -> parse_protocol
|
|
|
|
Without a valid parse_protocol, this returns zero, and wireguard then
|
|
rejects the skb. So, this wires up the ip_tunnel handler for layer 3
|
|
packets for that case.
|
|
|
|
Reported-by: Hans Wippel <ndev@hwipl.net>
|
|
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
|
|
Signed-off-by: David S. Miller <davem@davemloft.net>
|
|
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
|
|
---
|
|
drivers/net/wireguard/device.c | 1 +
|
|
1 file changed, 1 insertion(+)
|
|
|
|
--- a/drivers/net/wireguard/device.c
|
|
+++ b/drivers/net/wireguard/device.c
|
|
@@ -262,6 +262,7 @@ static void wg_setup(struct net_device *
|
|
max(sizeof(struct ipv6hdr), sizeof(struct iphdr));
|
|
|
|
dev->netdev_ops = &netdev_ops;
|
|
+ dev->header_ops = &ip_tunnel_header_ops;
|
|
dev->hard_header_len = 0;
|
|
dev->addr_len = 0;
|
|
dev->needed_headroom = DATA_PACKET_HEAD_ROOM;
|