Patch "ipv4: ip_tunnel: Unmask upper DSCP bits in ip_md_tunnel_xmit()" has been added to the 6.1-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    ipv4: ip_tunnel: Unmask upper DSCP bits in ip_md_tunnel_xmit()

to the 6.1-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     ipv4-ip_tunnel-unmask-upper-dscp-bits-in-ip_md_tunne.patch
and it can be found in the queue-6.1 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 05fb83647aff595e6e563953ad22d21f294f2f9d
Author: Ido Schimmel <idosch@xxxxxxxxxx>
Date:   Thu Sep 5 19:51:34 2024 +0300

    ipv4: ip_tunnel: Unmask upper DSCP bits in ip_md_tunnel_xmit()
    
    [ Upstream commit c34cfe72bb260fc49660d9e6a9ba95ba01669ae2 ]
    
    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.
    
    Note that the 'tos' variable includes the full DS field. Either the one
    specified via the tunnel key or the one inherited from the inner packet.
    
    Signed-off-by: Ido Schimmel <idosch@xxxxxxxxxx>
    Reviewed-by: Guillaume Nault <gnault@xxxxxxxxxx>
    Signed-off-by: David S. Miller <davem@xxxxxxxxxxxxx>
    Stable-dep-of: b5a7b661a073 ("net: Fix netns for ip_tunnel_init_flow()")
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/net/ipv4/ip_tunnel.c b/net/ipv4/ip_tunnel.c
index d3ad2c424fe9..eb74e33ffb64 100644
--- a/net/ipv4/ip_tunnel.c
+++ b/net/ipv4/ip_tunnel.c
@@ -43,6 +43,7 @@
 #include <net/rtnetlink.h>
 #include <net/udp.h>
 #include <net/dst_metadata.h>
+#include <net/inet_dscp.h>
 
 #if IS_ENABLED(CONFIG_IPV6)
 #include <net/ipv6.h>
@@ -609,9 +610,9 @@ void ip_md_tunnel_xmit(struct sk_buff *skb, struct net_device *dev,
 			tos = ipv6_get_dsfield((const struct ipv6hdr *)inner_iph);
 	}
 	ip_tunnel_init_flow(&fl4, proto, key->u.ipv4.dst, key->u.ipv4.src,
-			    tunnel_id_to_key32(key->tun_id), RT_TOS(tos),
-			    dev_net(dev), 0, skb->mark, skb_get_hash(skb),
-			    key->flow_flags);
+			    tunnel_id_to_key32(key->tun_id),
+			    tos & INET_DSCP_MASK, dev_net(dev), 0, skb->mark,
+			    skb_get_hash(skb), key->flow_flags);
 
 	if (!tunnel_hlen)
 		tunnel_hlen = ip_encap_hlen(&tun_info->encap);




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux