FAILED: patch "[PATCH] ipv6: Check attribute length for RTA_GATEWAY in multipath" failed to apply to 4.4-stable tree
Subsystems (3)
[email protected]
maintainerThe patch below does not apply to the 4.4-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From 4619bcf91399f00a40885100fb61d594d8454033 Mon Sep 17 00:00:00 2001
From: David Ahern <[email protected]>
Date: Thu, 30 Dec 2021 17:36:33 -0700
Subject: [PATCH] ipv6: Check attribute length for RTA_GATEWAY in multipath
route
Commit referenced in the Fixes tag used nla_memcpy for RTA_GATEWAY as does the current nla_get_in6_addr. nla_memcpy protects against accessing memory greater than what is in the attribute, but there is no check requiring the attribute to have an IPv6 address. Add it.
net/ipv6/route.c +20 -1
@@ -5224,6 +5224,19 @@ static bool ip6_route_mpath_should_notify(const struct fib6_info *rt)return should_notify; } +static int fib6_gw_from_attr (struct in6_addr *gw,struct nlattr *nla, +struct netlink_ext_ack *extack) +{ +if (nla_len (nla) <sizeof (*gw)) { +NL_SET_ERR_MSG (extack,"Invalid IPv6 address in RTA_GATEWAY" ); +return -EINVAL ; + } + + *gw =nla_get_in6_addr (nla); + +return 0 ; +} +static int ip6_route_multipath_add (struct fib6_config *cfg,struct netlink_ext_ack *extack) {
@@ -5264,7 +5277,13 @@ static int ip6_route_multipath_add(struct fib6_config *cfg, nla =nla_find (attrs, attrlen,RTA_GATEWAY );if (nla) { - r_cfg.fc_gateway =nla_get_in6_addr (nla); +int ret; + + ret =fib6_gw_from_attr (&r_cfg.fc_gateway, nla, + extack); +if (ret) +return ret; + r_cfg.fc_flags |=RTF_GATEWAY ; } r_cfg.fc_encap =nla_find (attrs, attrlen,RTA_ENCAP );
Hi!
Quoted 4 lines
The patch below does not apply to the 4.4-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
I could not find better place to reply.
I see this patch is queued for 5.10 and 4.19. But it is wrong:
Quoted 6 lines
Quoted 1 line
From
4619bcf91399f00a40885100fb61d594d8454033Mon Sep 17 00:00:00 2001From: David Ahern <[email protected]>
Date: Thu, 30 Dec 2021 17:36:33 -0700
Subject: [PATCH] ipv6: Check attribute length forRTA_GATEWAYin multipath
route
Quoted 7 lines
Commit referenced in the Fixes tag used
nla_memcpyforRTA_GATEWAYas does the currentnla_get_in6_addr.nla_memcpyprotects against accessing memory greater than what is in the attribute, but there is no check requiring the attribute to have an IPv6 address. Add it.Fixes 51ebd3181572 ("ipv6: add support of equal cost multipath(ECMP)")
...> @@ -5264,7 +5277,13 @@ static int ip6_route_multipath_add(struct fib6_config *cfg,
net/ipv6/route.c static int ip6_route_multipath_add(struct fib6_config *cfg, · line 5286
Quoted 11 lines
net/ipv6/route.c +7
-1nla =nla_find (attrs, attrlen,RTA_GATEWAY );if (nla) { - r_cfg.fc_gateway =nla_get_in6_addr (nla); +int ret; + + ret =fib6_gw_from_attr (&r_cfg.fc_gateway, nla, + extack); +if (ret) +return ret; +
Direct return may not be used here. It needs to goto cleanup.
It is already fixed in mainline, so you can probably just cherry-pick followup patch, too.
Best regards,
Pavel
Signature · 1 line
http://www.livejournal.com/~pavelmachek
Greg KH
maintainerQuoted 40 lines · Pavel Machek
Hi!
Quoted 4 lines
The patch below does not apply to the 4.4-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.I could not find better place to reply.
I see this patch is queued for 5.10 and 4.19. But it is wrong:
Quoted 6 lines
Quoted 1 line
From
4619bcf91399f00a40885100fb61d594d8454033Mon Sep 17 00:00:00 2001From: David Ahern <[email protected]>
Date: Thu, 30 Dec 2021 17:36:33 -0700
Subject: [PATCH] ipv6: Check attribute length forRTA_GATEWAYin multipath
routeQuoted 7 lines
Commit referenced in the Fixes tag used
nla_memcpyforRTA_GATEWAYas does the currentnla_get_in6_addr.nla_memcpyprotects against accessing memory greater than what is in the attribute, but there is no check requiring the attribute to have an IPv6 address. Add it.Fixes 51ebd3181572 ("ipv6: add support of equal cost multipath(ECMP)")
...> @@ -5264,7 +5277,13 @@ static int ip6_route_multipath_add(struct
fib6_config*cfg,net/ipv6/route.c static int ip6_route_multipath_add(struct fib6_config *cfg, · line 5286
Quoted 11 lines
net/ipv6/route.c +7
-1nla =nla_find (attrs, attrlen,RTA_GATEWAY );if (nla) { - r_cfg.fc_gateway =nla_get_in6_addr (nla); +int ret; + + ret =fib6_gw_from_attr (&r_cfg.fc_gateway, nla, + extack); +if (ret) +return ret; +Direct return may not be used here. It needs to goto cleanup.
Quoted 2 lines
It is already fixed in mainline, so you can probably just cherry-pick followup patch, too.
What is the follow-up patch git id?
thanks,
greg k-h