mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-05 10:31:46 +09:00
net: Fix netns for ip_tunnel_init_flow()
[ Upstream commit b5a7b661a073727219fedc35f5619f62418ffe72 ]
The device denoted by tunnel->parms.link resides in the underlay net
namespace. Therefore pass tunnel->net to ip_tunnel_init_flow().
Fixes: db53cd3d88 ("net: Handle l3mdev in ip_tunnel_init_flow")
Signed-off-by: Xiao Liang <shaw.leon@gmail.com>
Reviewed-by: Ido Schimmel <idosch@nvidia.com>
Link: https://patch.msgid.link/20241219130336.103839-1-shaw.leon@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
9b8f85c4d5
commit
d4b3978fdf
@@ -423,8 +423,7 @@ mlxsw_sp_span_gretap4_route(const struct net_device *to_dev,
|
|||||||
|
|
||||||
parms = mlxsw_sp_ipip_netdev_parms4(to_dev);
|
parms = mlxsw_sp_ipip_netdev_parms4(to_dev);
|
||||||
ip_tunnel_init_flow(&fl4, parms.iph.protocol, *daddrp, *saddrp,
|
ip_tunnel_init_flow(&fl4, parms.iph.protocol, *daddrp, *saddrp,
|
||||||
0, 0, dev_net(to_dev), parms.link, tun->fwmark, 0,
|
0, 0, tun->net, parms.link, tun->fwmark, 0, 0);
|
||||||
0);
|
|
||||||
|
|
||||||
rt = ip_route_output_key(tun->net, &fl4);
|
rt = ip_route_output_key(tun->net, &fl4);
|
||||||
if (IS_ERR(rt))
|
if (IS_ERR(rt))
|
||||||
|
|||||||
@@ -294,7 +294,7 @@ static int ip_tunnel_bind_dev(struct net_device *dev)
|
|||||||
|
|
||||||
ip_tunnel_init_flow(&fl4, iph->protocol, iph->daddr,
|
ip_tunnel_init_flow(&fl4, iph->protocol, iph->daddr,
|
||||||
iph->saddr, tunnel->parms.o_key,
|
iph->saddr, tunnel->parms.o_key,
|
||||||
iph->tos & INET_DSCP_MASK, dev_net(dev),
|
iph->tos & INET_DSCP_MASK, tunnel->net,
|
||||||
tunnel->parms.link, tunnel->fwmark, 0, 0);
|
tunnel->parms.link, tunnel->fwmark, 0, 0);
|
||||||
rt = ip_route_output_key(tunnel->net, &fl4);
|
rt = ip_route_output_key(tunnel->net, &fl4);
|
||||||
|
|
||||||
@@ -611,7 +611,7 @@ void ip_md_tunnel_xmit(struct sk_buff *skb, struct net_device *dev,
|
|||||||
}
|
}
|
||||||
ip_tunnel_init_flow(&fl4, proto, key->u.ipv4.dst, key->u.ipv4.src,
|
ip_tunnel_init_flow(&fl4, proto, key->u.ipv4.dst, key->u.ipv4.src,
|
||||||
tunnel_id_to_key32(key->tun_id),
|
tunnel_id_to_key32(key->tun_id),
|
||||||
tos & INET_DSCP_MASK, dev_net(dev), 0, skb->mark,
|
tos & INET_DSCP_MASK, tunnel->net, 0, skb->mark,
|
||||||
skb_get_hash(skb), key->flow_flags);
|
skb_get_hash(skb), key->flow_flags);
|
||||||
|
|
||||||
if (!tunnel_hlen)
|
if (!tunnel_hlen)
|
||||||
@@ -774,7 +774,7 @@ void ip_tunnel_xmit(struct sk_buff *skb, struct net_device *dev,
|
|||||||
|
|
||||||
ip_tunnel_init_flow(&fl4, protocol, dst, tnl_params->saddr,
|
ip_tunnel_init_flow(&fl4, protocol, dst, tnl_params->saddr,
|
||||||
tunnel->parms.o_key, tos & INET_DSCP_MASK,
|
tunnel->parms.o_key, tos & INET_DSCP_MASK,
|
||||||
dev_net(dev), READ_ONCE(tunnel->parms.link),
|
tunnel->net, READ_ONCE(tunnel->parms.link),
|
||||||
tunnel->fwmark, skb_get_hash(skb), 0);
|
tunnel->fwmark, skb_get_hash(skb), 0);
|
||||||
|
|
||||||
if (ip_tunnel_encap(skb, &tunnel->encap, &protocol, &fl4) < 0)
|
if (ip_tunnel_encap(skb, &tunnel->encap, &protocol, &fl4) < 0)
|
||||||
|
|||||||
Reference in New Issue
Block a user