diff -drupN a/net/ipv4/icmp.c b/net/ipv4/icmp.c --- a/net/ipv4/icmp.c 2018-08-06 17:23:04.000000000 +0300 +++ b/net/ipv4/icmp.c 2022-06-12 05:28:14.000000000 +0300 @@ -425,6 +425,7 @@ static void icmp_reply(struct icmp_bxm * fl4.daddr = daddr; fl4.saddr = saddr; fl4.flowi4_mark = mark; + fl4.flowi4_uid = sock_net_uid(net, NULL); fl4.flowi4_tos = RT_TOS(ip_hdr(skb)->tos); fl4.flowi4_proto = IPPROTO_ICMP; fl4.flowi4_oif = l3mdev_master_ifindex(skb->dev); @@ -473,6 +474,7 @@ static struct rtable *icmp_route_lookup( param->replyopts.opt.opt.faddr : iph->saddr); fl4->saddr = saddr; fl4->flowi4_mark = mark; + fl4->flowi4_uid = sock_net_uid(net, NULL); fl4->flowi4_tos = RT_TOS(tos); fl4->flowi4_proto = IPPROTO_ICMP; fl4->fl4_icmp_type = type; @@ -1085,6 +1087,7 @@ void icmp_err(struct sk_buff *skb, u32 i return; } + /* RED-PEN dead code? the if above will eat all. */ if (type == ICMP_DEST_UNREACH && code == ICMP_FRAG_NEEDED) ipv4_update_pmtu(skb, net, info, 0, 0, IPPROTO_ICMP, 0); else if (type == ICMP_REDIRECT)