@@ -1835,9 +1835,11 @@ static int ip_route_input_slow(struct sk_buff *skb, __be32 daddr, __be32 saddr,
0, dev, in_dev, &itag);
if (err < 0) {
ip_handle_martian_source(dev, in_dev, skb, daddr, saddr);
- goto out;
+ } else {
+ err = ip_route_local_input(skb, &res, net, in_dev,
+ flags, itag, err);
}
- goto local_input;
+ goto out;
}
if (!IN_DEV_FORWARD(in_dev)) {
@@ -1870,7 +1872,6 @@ out: return err;
res.type = RTN_BROADCAST;
RT_CACHE_STAT_INC(in_brd);
-local_input:
err = ip_route_local_input(skb, &res, net, in_dev,
flags, itag, err);
goto out;
@@ -1880,7 +1881,10 @@ out: return err;
res.type = RTN_UNREACHABLE;
res.fi = NULL;
res.table = NULL;
- goto local_input;
+
+ err = ip_route_local_input(skb, &res, net, in_dev,
+ flags, itag, err);
+ goto out;
}
int ip_route_input_noref(struct sk_buff *skb, __be32 daddr, __be32 saddr,
Move calls to ip_route_local_input to jump sites and remove local_input label. Signed-off-by: David Ahern <dsa@cumulusnetworks.com> --- net/ipv4/route.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-)