ipvs: clear skb->tstamp in forwarding path
authorJulian Anastasov <ja@ssi.bg>
Fri, 9 Oct 2020 18:24:25 +0000 (21:24 +0300)
committerPablo Neira Ayuso <pablo@netfilter.org>
Sun, 11 Oct 2020 23:59:41 +0000 (01:59 +0200)
fq qdisc requires tstamp to be cleared in forwarding path

Reported-by: Evgeny B <abt-admin@mail.ru>
Link: https://bugzilla.kernel.org/show_bug.cgi?id=209427
Suggested-by: Eric Dumazet <eric.dumazet@gmail.com>
Fixes: 8203e2d844d3 ("net: clear skb->tstamp in forwarding paths")
Fixes: fb420d5d91c1 ("tcp/fq: move back to CLOCK_MONOTONIC")
Fixes: 80b14dee2bea ("net: Add a new socket option for a future transmit time.")
Signed-off-by: Julian Anastasov <ja@ssi.bg>
Reviewed-by: Simon Horman <horms@verge.net.au>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
net/netfilter/ipvs/ip_vs_xmit.c

index b00866d777fe0e9ed8018087ebc664c56f29b5c9..d2e5a8f644b805422f1cff6b4a409646689e77c9 100644 (file)
@@ -609,6 +609,8 @@ static inline int ip_vs_tunnel_xmit_prepare(struct sk_buff *skb,
        if (ret == NF_ACCEPT) {
                nf_reset_ct(skb);
                skb_forward_csum(skb);
+               if (skb->dev)
+                       skb->tstamp = 0;
        }
        return ret;
 }
@@ -649,6 +651,8 @@ static inline int ip_vs_nat_send_or_cont(int pf, struct sk_buff *skb,
 
        if (!local) {
                skb_forward_csum(skb);
+               if (skb->dev)
+                       skb->tstamp = 0;
                NF_HOOK(pf, NF_INET_LOCAL_OUT, cp->ipvs->net, NULL, skb,
                        NULL, skb_dst(skb)->dev, dst_output);
        } else
@@ -669,6 +673,8 @@ static inline int ip_vs_send_or_cont(int pf, struct sk_buff *skb,
        if (!local) {
                ip_vs_drop_early_demux_sk(skb);
                skb_forward_csum(skb);
+               if (skb->dev)
+                       skb->tstamp = 0;
                NF_HOOK(pf, NF_INET_LOCAL_OUT, cp->ipvs->net, NULL, skb,
                        NULL, skb_dst(skb)->dev, dst_output);
        } else