Message ID | 20250312013854.61125-1-kuniyu@amazon.com (mailing list archive) |
---|---|
State | New |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | [v1,net] ipv6: Set errno after ip_fib_metrics_init() in ip6_route_info_create(). | expand |
On 3/12/25 2:38 AM, Kuniyuki Iwashima wrote: > While creating a new IPv6, we could get a weird -ENOMEM when > RTA_NH_ID is set and either of the conditions below is true: > > 1) CONFIG_IPV6_SUBTREES is enabled and rtm_src_len is specified > 2) nexthop_get() fails > > e.g.) > > # strace ip -6 route add fe80::dead:beef:dead:beef nhid 1 from :: > recvmsg(3, {msg_iov=[{iov_base=[...[ > {error=-ENOMEM, msg=[... [...]]}, > [{nla_len=49, nla_type=NLMSGERR_ATTR_MSG}, "Nexthops can not be used with so"...] > ]], iov_len=32768}], msg_iovlen=1, msg_controllen=0, msg_flags=0}, 0) = 148 > > Let's set err explicitly after ip_fib_metrics_init() in > ip6_route_info_create(). > > Fixes: f88d8ea67fbd ("ipv6: Plumb support for nexthop object in a fib6_info") > Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.com> > --- > net/ipv6/route.c | 2 ++ > 1 file changed, 2 insertions(+) > Reviewed-by: David Ahern <dsahern@kernel.org>
diff --git a/net/ipv6/route.c b/net/ipv6/route.c index bc6bcf5d7133..15ce21afc8c6 100644 --- a/net/ipv6/route.c +++ b/net/ipv6/route.c @@ -3803,10 +3803,12 @@ static struct fib6_info *ip6_route_info_create(struct fib6_config *cfg, if (nh) { if (rt->fib6_src.plen) { NL_SET_ERR_MSG(extack, "Nexthops can not be used with source routing"); + err = -EINVAL; goto out_free; } if (!nexthop_get(nh)) { NL_SET_ERR_MSG(extack, "Nexthop has been deleted"); + err = -ENOENT; goto out_free; } rt->nh = nh;
While creating a new IPv6, we could get a weird -ENOMEM when RTA_NH_ID is set and either of the conditions below is true: 1) CONFIG_IPV6_SUBTREES is enabled and rtm_src_len is specified 2) nexthop_get() fails e.g.) # strace ip -6 route add fe80::dead:beef:dead:beef nhid 1 from :: recvmsg(3, {msg_iov=[{iov_base=[...[ {error=-ENOMEM, msg=[... [...]]}, [{nla_len=49, nla_type=NLMSGERR_ATTR_MSG}, "Nexthops can not be used with so"...] ]], iov_len=32768}], msg_iovlen=1, msg_controllen=0, msg_flags=0}, 0) = 148 Let's set err explicitly after ip_fib_metrics_init() in ip6_route_info_create(). Fixes: f88d8ea67fbd ("ipv6: Plumb support for nexthop object in a fib6_info") Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.com> --- net/ipv6/route.c | 2 ++ 1 file changed, 2 insertions(+)