]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
ipvs: Always clear ipvs_property flag in skb_scrub_packet()
authorPhilo Lu <lulie@linux.alibaba.com>
Sat, 22 Feb 2025 03:35:18 +0000 (11:35 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 13 Mar 2025 11:47:31 +0000 (12:47 +0100)
[ Upstream commit de2c211868b9424f9aa9b3432c4430825bafb41b ]

We found an issue when using bpf_redirect with ipvs NAT mode after
commit ff70202b2d1a ("dev_forward_skb: do not scrub skb mark within
the same name space"). Particularly, we use bpf_redirect to return
the skb directly back to the netif it comes from, i.e., xnet is
false in skb_scrub_packet(), and then ipvs_property is preserved
and SNAT is skipped in the rx path.

ipvs_property has been already cleared when netns is changed in
commit 2b5ec1a5f973 ("netfilter/ipvs: clear ipvs_property flag when
SKB net namespace changed"). This patch just clears it in spite of
netns.

Fixes: 2b5ec1a5f973 ("netfilter/ipvs: clear ipvs_property flag when SKB net namespace changed")
Signed-off-by: Philo Lu <lulie@linux.alibaba.com>
Acked-by: Julian Anastasov <ja@ssi.bg>
Link: https://patch.msgid.link/20250222033518.126087-1-lulie@linux.alibaba.com
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
net/core/skbuff.c

index 754dc7029310949f4d33596e9e22ab13b2b24e18..297a2efd6322d13a68b5e12702f5dfd88cc19263 100644 (file)
@@ -5361,11 +5361,11 @@ void skb_scrub_packet(struct sk_buff *skb, bool xnet)
        skb->offload_fwd_mark = 0;
        skb->offload_l3_fwd_mark = 0;
 #endif
+       ipvs_reset(skb);
 
        if (!xnet)
                return;
 
-       ipvs_reset(skb);
        skb->mark = 0;
        skb->tstamp = 0;
 }