On 8/15/17 8:50 PM, Roopa Prabhu wrote:
> diff --git a/net/ipv4/route.c b/net/ipv4/route.c
> index 7effa62..49a018f 100644
> --- a/net/ipv4/route.c
> +++ b/net/ipv4/route.c
> @@ -2763,14 +2763,21 @@ static int inet_rtm_getroute(struct sk_buff *in_skb,
> struct nlmsghdr *nlh,
> if (rtm->rtm_flags & RTM_F_LOOKUP_TABLE)
> table_id = rt->rt_table_id;
>
> - if (rtm->rtm_flags & RTM_F_FIB_MATCH)
> + if (rtm->rtm_flags & RTM_F_FIB_MATCH) {
> + if (!res.fi) {
> + err = fib_props[res->type].error;
> + if (!err)
> + err = -EINVAL;
I think -EHOSTUNREACH is a better error than EINVAL. Nothing about the
user inputs are invalid; rather the lookup is failing, but indirectly.