]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
ipv4: icmp: Pass IPv4 control block structure as an argument to __icmp_send()
authorIdo Schimmel <idosch@nvidia.com>
Mon, 8 Sep 2025 07:32:32 +0000 (10:32 +0300)
committerPaolo Abeni <pabeni@redhat.com>
Thu, 11 Sep 2025 10:22:38 +0000 (12:22 +0200)
commit0d3c4a441686663ad34aa3d6abe8c5317d21e707
treef9150ea7b4545530cf4804d8a5245cb905deff43
parentcda276bcb9a5c3d53620b3af9c372a87e0f92583
ipv4: icmp: Pass IPv4 control block structure as an argument to __icmp_send()

__icmp_send() is used to generate ICMP error messages in response to
various situations such as MTU errors (i.e., "Fragmentation Required")
and too many hops (i.e., "Time Exceeded").

The skb that generated the error does not necessarily come from the IPv4
layer and does not always have a valid IPv4 control block in skb->cb.

Therefore, commit 9ef6b42ad6fd ("net: Add __icmp_send helper.") changed
the function to take the IP options structure as argument instead of
deriving it from the skb's control block. Some callers of this function
such as icmp_send() pass the IP options structure from the skb's control
block as in these call paths the control block is known to be valid, but
other callers simply pass a zeroed structure.

A subsequent patch will need __icmp_send() to access more information
from the IPv4 control block (specifically, the ifindex of the input
interface). As a preparation for this change, change the function to
take the IPv4 control block structure as an argument instead of the IP
options structure. This makes the function similar to its IPv6
counterpart that already takes the IPv6 control block structure as an
argument.

No functional changes intended.

Reviewed-by: Petr Machata <petrm@nvidia.com>
Reviewed-by: David Ahern <dsahern@kernel.org>
Signed-off-by: Ido Schimmel <idosch@nvidia.com>
Reviewed-by: Eric Dumazet <edumazet@google.com>
Link: https://patch.msgid.link/20250908073238.119240-3-idosch@nvidia.com
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
include/net/icmp.h
net/ipv4/cipso_ipv4.c
net/ipv4/icmp.c
net/ipv4/route.c