From: Antoine Tenart Date: Mon, 15 Sep 2025 09:19:55 +0000 (+0200) Subject: net: ipv4: simplify drop reason handling in ip_rcv_finish_core X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=dcc0e68ed300dae3325e323417773dd59a6a65db;p=users%2Fhch%2Fmisc.git net: ipv4: simplify drop reason handling in ip_rcv_finish_core Instead of setting the drop reason to SKB_DROP_REASON_NOT_SPECIFIED early and having to reset it each time it is overridden by a function returned value, just set the drop reason to the expected value before returning from ip_rcv_finish_core. Signed-off-by: Antoine Tenart Link: https://patch.msgid.link/20250915091958.15382-3-atenart@kernel.org Signed-off-by: Jakub Kicinski --- diff --git a/net/ipv4/ip_input.c b/net/ipv4/ip_input.c index 8878e865ddf6..93b8286e526a 100644 --- a/net/ipv4/ip_input.c +++ b/net/ipv4/ip_input.c @@ -335,7 +335,6 @@ static int ip_rcv_finish_core(struct net *net, goto drop_error; } - drop_reason = SKB_DROP_REASON_NOT_SPECIFIED; if (READ_ONCE(net->ipv4.sysctl_ip_early_demux) && !skb_dst(skb) && !skb->sk && @@ -354,7 +353,6 @@ static int ip_rcv_finish_core(struct net *net, drop_reason = udp_v4_early_demux(skb); if (unlikely(drop_reason)) goto drop_error; - drop_reason = SKB_DROP_REASON_NOT_SPECIFIED; /* must reload iph, skb->head might have changed */ iph = ip_hdr(skb); @@ -372,7 +370,6 @@ static int ip_rcv_finish_core(struct net *net, ip4h_dscp(iph), dev); if (unlikely(drop_reason)) goto drop_error; - drop_reason = SKB_DROP_REASON_NOT_SPECIFIED; } else { struct in_device *in_dev = __in_dev_get_rcu(dev); @@ -391,8 +388,10 @@ static int ip_rcv_finish_core(struct net *net, } #endif - if (iph->ihl > 5 && ip_rcv_options(skb, dev)) + if (iph->ihl > 5 && ip_rcv_options(skb, dev)) { + drop_reason = SKB_DROP_REASON_NOT_SPECIFIED; goto drop; + } rt = skb_rtable(skb); if (rt->rt_type == RTN_MULTICAST) {