From: "Jason A. Donenfeld" <Jason@xxxxxxxxx> Date: Sun, 9 Feb 2020 15:31:41 +0100 > Because sunvnet is calling icmp from network device context, it should use > the ndo helper so that the rate limiting applies correctly. > > Signed-off-by: Jason A. Donenfeld <Jason@xxxxxxxxx> Two things, first you should resubmit this patch series with a proper header [PATCH 0/N ... ] posting. Second: > @@ -1363,14 +1363,14 @@ sunvnet_start_xmit_common(struct sk_buff *skb, struct net_device *dev, > rt = ip_route_output_key(dev_net(dev), &fl4); > if (!IS_ERR(rt)) { > skb_dst_set(skb, &rt->dst); > - icmp_send(skb, ICMP_DEST_UNREACH, > - ICMP_FRAG_NEEDED, > - htonl(localmtu)); > + icmp_ndo_send(skb, ICMP_DEST_UNREACH, > + ICMP_FRAG_NEEDED, > + htonl(localmtu)); > } > } Well, obviously if the saddr could be wrong here then this invalidates the route lookup done in the lines above your changes. It looks like this code is just making sure the ICMP path is routable which is kinda bogus because that is the icmp code's job. So very likely the right thing to do is to remove all of that route lookup and check code entirely. And that matches what all the other instances of driver icmp calls in your patces do.