Message ID | 1442962523-3974-2-git-send-email-dsa@cumulusnetworks.com |
---|---|
State | Rejected, archived |
Delegated to: | David Miller |
Headers | show |
On 09/22/2015 03:55 PM, David Ahern wrote: > err is initialized to -EINVAL when it is declared. It is not reset until > fib_lookup which is well after the 3 users of the martian_source jump. So > resetting err to -EINVAL at martian_source label is not needed. > > Removing that line obviates the need for the martian_source_keep_err label > so delete it. > > Signed-off-by: David Ahern <dsa@cumulusnetworks.com> The comments above and the code below don't sync up. The function fib_validate_source can return either -EINVAL, -EXDEV, 0, or 1. The fact is this may be acceptable as long as all callers of ip_route_input_slow will handle a non-zero value as an error and it doesn't care about what the actual return value is. If that is what you are going for here at least the comment should be updated, and we should be explicit somewhere about documenting the return values. > --- > net/ipv4/route.c | 6 ++---- > 1 file changed, 2 insertions(+), 4 deletions(-) > > diff --git a/net/ipv4/route.c b/net/ipv4/route.c > index 80f7c5b7b832..ef36dfed24da 100644 > --- a/net/ipv4/route.c > +++ b/net/ipv4/route.c > @@ -1760,7 +1760,7 @@ static int ip_route_input_slow(struct sk_buff *skb, __be32 daddr, __be32 saddr, > err = fib_validate_source(skb, saddr, daddr, tos, > 0, dev, in_dev, &itag); > if (err < 0) > - goto martian_source_keep_err; > + goto martian_source; > goto local_input; > } > > @@ -1782,7 +1782,7 @@ out: return err; > err = fib_validate_source(skb, saddr, 0, tos, 0, dev, > in_dev, &itag); > if (err < 0) > - goto martian_source_keep_err; > + goto martian_source; > } > flags |= RTCF_BROADCAST; > res.type = RTN_BROADCAST; > @@ -1858,8 +1858,6 @@ out: return err; > goto out; > > martian_source: > - err = -EINVAL; > -martian_source_keep_err: > ip_handle_martian_source(dev, in_dev, skb, daddr, saddr); > goto out; > } > -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 09/22/2015 06:04 PM, Alexander Duyck wrote: > On 09/22/2015 03:55 PM, David Ahern wrote: >> err is initialized to -EINVAL when it is declared. It is not reset until >> fib_lookup which is well after the 3 users of the martian_source jump. So >> resetting err to -EINVAL at martian_source label is not needed. >> >> Removing that line obviates the need for the martian_source_keep_err >> label >> so delete it. >> >> Signed-off-by: David Ahern <dsa@cumulusnetworks.com> > > The comments above and the code below don't sync up. The function > fib_validate_source can return either -EINVAL, -EXDEV, 0, or 1. The > fact is this may be acceptable as long as all callers of > ip_route_input_slow will handle a non-zero value as an error and it > doesn't care about what the actual return value is. If that is what you > are going for here at least the comment should be updated, and we should > be explicit somewhere about documenting the return values. Actually this patch is correct. I got my wires a bit crossed and misread martian_source vs martian_source_keep_err. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/net/ipv4/route.c b/net/ipv4/route.c index 80f7c5b7b832..ef36dfed24da 100644 --- a/net/ipv4/route.c +++ b/net/ipv4/route.c @@ -1760,7 +1760,7 @@ static int ip_route_input_slow(struct sk_buff *skb, __be32 daddr, __be32 saddr, err = fib_validate_source(skb, saddr, daddr, tos, 0, dev, in_dev, &itag); if (err < 0) - goto martian_source_keep_err; + goto martian_source; goto local_input; } @@ -1782,7 +1782,7 @@ out: return err; err = fib_validate_source(skb, saddr, 0, tos, 0, dev, in_dev, &itag); if (err < 0) - goto martian_source_keep_err; + goto martian_source; } flags |= RTCF_BROADCAST; res.type = RTN_BROADCAST; @@ -1858,8 +1858,6 @@ out: return err; goto out; martian_source: - err = -EINVAL; -martian_source_keep_err: ip_handle_martian_source(dev, in_dev, skb, daddr, saddr); goto out; }
err is initialized to -EINVAL when it is declared. It is not reset until fib_lookup which is well after the 3 users of the martian_source jump. So resetting err to -EINVAL at martian_source label is not needed. Removing that line obviates the need for the martian_source_keep_err label so delete it. Signed-off-by: David Ahern <dsa@cumulusnetworks.com> --- net/ipv4/route.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-)