I tried to analyze the cases of using icmp_send in kernel. It indirectly used 
by many protocols:
ARP, IP, UDP, Netfilter, IPVS, IPIP, GRE over IP, CLIP, XFRM, CIPSOv4.
Different IP tunnels and XFRM operating directly over IP layer and if using own 
skb->cb data,
having IP header data in front of it. CLIP uses icmp_send for packets from arp 
queue only.
So, If I right, only TCP layer moves IP header data and only CIPSOv4 operates 
on both IP and
TCP layers now. 

19.02.2019, 04:25, "David Miller" <da...@davemloft.net>:
> From: Nazarov Sergey <s-naza...@yandex.ru>
> Date: Mon, 18 Feb 2019 16:39:11 +0300
>
>>  I think, it would not be a good solution, if I will analyze all
>>  subsystems using icmp_send, because I do not have enough knowledge
>>  for this. I propose to add a new function, for example,
>>  ismp_send_safe, something like that:
>
> Please don't do this.
>
> Solve the problem properly by auditing each case, there aren't a lot and
> it is not too difficult to see the upcall sites.

Reply via email to