net: Fix CONFIG_NET_CLS_ACT=n and CONFIG_NFT_FWD_NETDEV={y, m} build
authorPablo Neira Ayuso <pablo@netfilter.org>
Wed, 25 Mar 2020 12:47:18 +0000 (13:47 +0100)
committerBen Hutchings <benh@debian.org>
Wed, 15 Apr 2020 02:37:48 +0000 (03:37 +0100)
Origin: https://git.kernel.org/linus/2c64605b590edadb3fb46d1ec6badb49e940b479

net/netfilter/nft_fwd_netdev.c: In function ‘nft_fwd_netdev_eval’:
    net/netfilter/nft_fwd_netdev.c:32:10: error: ‘struct sk_buff’ has no member named ‘tc_redirected’
      pkt->skb->tc_redirected = 1;
              ^~
    net/netfilter/nft_fwd_netdev.c:33:10: error: ‘struct sk_buff’ has no member named ‘tc_from_ingress’
      pkt->skb->tc_from_ingress = 1;
              ^~

To avoid a direct dependency with tc actions from netfilter, wrap the
redirect bits around CONFIG_NET_REDIRECT and move helpers to
include/linux/skbuff.h. Turn on this toggle from the ifb driver, the
only existing client of these bits in the tree.

This patch adds skb_set_redirected() that sets on the redirected bit
on the skbuff, it specifies if the packet was redirect from ingress
and resets the timestamp (timestamp reset was originally missing in the
netfilter bugfix).

Fixes: bcfabee1afd99484 ("netfilter: nft_fwd_netdev: allow to redirect to ifb via ingress")
Reported-by: noreply@ellerman.id.au
Reported-by: Geert Uytterhoeven <geert@linux-m68k.org>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
[bwh: Just the WireGuard change, as the rest was included in 5.5.14]

Gbp-Pq: Topic features/all/wireguard
Gbp-Pq: Name 0012-net-fix-config_net_cls_act-n-and-config_nft_fwd_netd.patch

drivers/net/wireguard/queueing.h

index cf1e0e2376d8113213d3a0302b785a8842c089d6..3432232afe061317ce85cf344fccff2078811547 100644 (file)
@@ -100,8 +100,8 @@ static inline void wg_reset_packet(struct sk_buff *skb)
        skb->dev = NULL;
 #ifdef CONFIG_NET_SCHED
        skb->tc_index = 0;
-       skb_reset_tc(skb);
 #endif
+       skb_reset_redirect(skb);
        skb->hdr_len = skb_headroom(skb);
        skb_reset_mac_header(skb);
        skb_reset_network_header(skb);