Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S934416AbbEMM3J (ORCPT ); Wed, 13 May 2015 08:29:09 -0400 Received: from mail-wg0-f51.google.com ([74.125.82.51]:35001 "EHLO mail-wg0-f51.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933446AbbEMM3E (ORCPT ); Wed, 13 May 2015 08:29:04 -0400 Message-ID: <55534389.8070307@6wind.com> Date: Wed, 13 May 2015 14:28:57 +0200 From: Nicolas Dichtel Reply-To: nicolas.dichtel@6wind.com Organization: 6WIND User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.6.0 MIME-Version: 1.0 To: Michal Kubecek , "David S. Miller" CC: netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Alexey Kuznetsov , James Morris , Hideaki YOSHIFUJI , Patrick McHardy Subject: Re: [PATCH net 1/2] ipv6: do not delete previously existing ECMP routes if add fails References: <4e3d075f2be93d9655bc1372a107584368a29eab.1431500953.git.mkubecek@suse.cz> In-Reply-To: <4e3d075f2be93d9655bc1372a107584368a29eab.1431500953.git.mkubecek@suse.cz> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1626 Lines: 44 Le 13/05/2015 11:50, Michal Kubecek a écrit : > If adding a nexthop of an IPv6 multipath route fails, comment in > ip6_route_multipath() says we are going to delete all nexthops already > added. However, current implementation deletes even the routes it > hasn't even tried to add yet. For example, running > > ip route add 1234:5678::/64 \ > nexthop via fe80::aa dev dummy1 \ > nexthop via fe80::bb dev dummy1 \ > nexthop via fe80::cc dev dummy1 > > twice results in removing all routes first command added. > > Limit the second (delete) run to nexthops that succeeded in the first > (add) run. > > Fixes: 51ebd3181572 ("ipv6: add support of equal cost multipath (ECMP)") > Signed-off-by: Michal Kubecek > --- > net/ipv6/route.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/net/ipv6/route.c b/net/ipv6/route.c > index d3588885f097..18b92c05b541 100644 > --- a/net/ipv6/route.c > +++ b/net/ipv6/route.c > @@ -2536,6 +2536,7 @@ beginning: > * next hops that have been already added. > */ > add = 0; > + remaining = cfg->fc_mp_len - remaining; > goto beginning; Not sure to understand your fix. At the label beginning, the code is: beginning: rtnh = (struct rtnexthop *)cfg->fc_mp; remaining = cfg->fc_mp_len; Hence, 'remaining' will be overridden. How does your patch work? -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/