]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
ipv4: ip_tunnel: Unmask upper DSCP bits in ip_tunnel_bind_dev()
authorIdo Schimmel <idosch@nvidia.com>
Thu, 5 Sep 2024 16:51:33 +0000 (19:51 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 9 Jan 2025 12:30:00 +0000 (13:30 +0100)
[ Upstream commit e7191e517a03d025405c7df730b400ad4118474e ]

Unmask the upper DSCP bits when initializing an IPv4 flow key via
ip_tunnel_init_flow() before passing it to ip_route_output_key() so that
in the future we could perform the FIB lookup according to the full DSCP
value.

Signed-off-by: Ido Schimmel <idosch@nvidia.com>
Reviewed-by: Guillaume Nault <gnault@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Stable-dep-of: b5a7b661a073 ("net: Fix netns for ip_tunnel_init_flow()")
Signed-off-by: Sasha Levin <sashal@kernel.org>
net/ipv4/ip_tunnel.c

index 196fe734ad38c090de4c70d6a0e321faea3d524b..d3ad2c424fe9e30c781dc7153971332257498d38 100644 (file)
@@ -293,7 +293,7 @@ static int ip_tunnel_bind_dev(struct net_device *dev)
 
                ip_tunnel_init_flow(&fl4, iph->protocol, iph->daddr,
                                    iph->saddr, tunnel->parms.o_key,
-                                   RT_TOS(iph->tos), dev_net(dev),
+                                   iph->tos & INET_DSCP_MASK, dev_net(dev),
                                    tunnel->parms.link, tunnel->fwmark, 0, 0);
                rt = ip_route_output_key(tunnel->net, &fl4);