Skip to content

Commit 9a81fc3

Browse files
q2venPaolo Abeni
authored andcommitted
ipv6: Set errno after ip_fib_metrics_init() in ip6_route_info_create().
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: f88d8ea ("ipv6: Plumb support for nexthop object in a fib6_info") Signed-off-by: Kuniyuki Iwashima <[email protected]> Reviewed-by: David Ahern <[email protected]> Link: https://patch.msgid.link/[email protected] Signed-off-by: Paolo Abeni <[email protected]>
1 parent 9740890 commit 9a81fc3

File tree

1 file changed

+2
-0
lines changed

1 file changed

+2
-0
lines changed

net/ipv6/route.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3803,10 +3803,12 @@ static struct fib6_info *ip6_route_info_create(struct fib6_config *cfg,
38033803
if (nh) {
38043804
if (rt->fib6_src.plen) {
38053805
NL_SET_ERR_MSG(extack, "Nexthops can not be used with source routing");
3806+
err = -EINVAL;
38063807
goto out_free;
38073808
}
38083809
if (!nexthop_get(nh)) {
38093810
NL_SET_ERR_MSG(extack, "Nexthop has been deleted");
3811+
err = -ENOENT;
38103812
goto out_free;
38113813
}
38123814
rt->nh = nh;

0 commit comments

Comments
 (0)