]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
ipv4: route: fix drop reason being overridden in ip_route_input_slow
authorAntoine Tenart <atenart@kernel.org>
Wed, 8 Jan 2025 16:57:15 +0000 (17:57 +0100)
committerJakub Kicinski <kuba@kernel.org>
Fri, 10 Jan 2025 02:03:24 +0000 (18:03 -0800)
When jumping to 'martian_destination' a drop reason is always set but
that label falls-through the 'e_nobufs' one, overriding the value.

The behavior was introduced by the mentioned commit. The logic went
from,

goto martian_destination;
...
  martian_destination:
...
  e_inval:
err = -EINVAL;
goto out;
  e_nobufs:
err = -ENOBUFS;
goto out;

to,

reason = ...;
goto martian_destination;
...
  martian_destination:
...
  e_nobufs:
reason = SKB_DROP_REASON_NOMEM;
goto out;

A 'goto out' is clearly missing now after 'martian_destination' to avoid
overriding the drop reason.

Fixes: 5b92112acd8e ("net: ip: make ip_route_input_slow() return drop reasons")
Reported-by: Sabrina Dubroca <sd@queasysnail.net>
Cc: Menglong Dong <menglong8.dong@gmail.com>
Signed-off-by: Antoine Tenart <atenart@kernel.org>
Reviewed-by: Sabrina Dubroca <sd@queasysnail.net>
Link: https://patch.msgid.link/20250108165725.404564-1-atenart@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/ipv4/route.c

index 0fbec350961862f76b7eab332539472fed5a5286..e1564b95fab09500157818e748b913366f990fdf 100644 (file)
@@ -2445,6 +2445,7 @@ martian_destination:
                net_warn_ratelimited("martian destination %pI4 from %pI4, dev %s\n",
                                     &daddr, &saddr, dev->name);
 #endif
+       goto out;
 
 e_nobufs:
        reason = SKB_DROP_REASON_NOMEM;