[PATCH 5.4 28/34] ipv6: Do cleanup if attribute validation fails in multipath route

From: Greg Kroah-Hartman
Date: Mon Jan 10 2022 - 02:33:16 EST


From: David Ahern <dsahern@xxxxxxxxxx>

[ Upstream commit 95bdba23b5b4aa75fe3e6c84335e638641c707bb ]

As Nicolas noted, if gateway validation fails walking the multipath
attribute the code should jump to the cleanup to free previously
allocated memory.

Fixes: 1ff15a710a86 ("ipv6: Check attribute length for RTA_GATEWAY when deleting multipath route")
Signed-off-by: David Ahern <dsahern@xxxxxxxxxx>
Acked-by: Nicolas Dichtel <nicolas.dichtel@xxxxxxxxx>
Link: https://lore.kernel.org/r/20220103170555.94638-1-dsahern@xxxxxxxxxx
Signed-off-by: Jakub Kicinski <kuba@xxxxxxxxxx>
Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>
---
net/ipv6/route.c | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)

diff --git a/net/ipv6/route.c b/net/ipv6/route.c
index 56f0783df5896..5ef6e27e026e9 100644
--- a/net/ipv6/route.c
+++ b/net/ipv6/route.c
@@ -5146,12 +5146,10 @@ static int ip6_route_multipath_add(struct fib6_config *cfg,

nla = nla_find(attrs, attrlen, RTA_GATEWAY);
if (nla) {
- int ret;
-
- ret = fib6_gw_from_attr(&r_cfg.fc_gateway, nla,
+ err = fib6_gw_from_attr(&r_cfg.fc_gateway, nla,
extack);
- if (ret)
- return ret;
+ if (err)
+ goto cleanup;

r_cfg.fc_flags |= RTF_GATEWAY;
}
--
2.34.1