From mboxrd@z Thu Jan 1 00:00:00 1970 From: David Miller Subject: Re: [PATCH net v2 1/2] ipv6: reset dst.expires value when clearing expire flag Date: Fri, 25 Oct 2013 19:27:43 -0400 (EDT) Message-ID: <20131025.192743.556790819489254616.davem@davemloft.net> References: <20131024054816.GB5973@order.stressinduktion.org> <20131024081427.GC15744@order.stressinduktion.org> Mime-Version: 1.0 Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit Cc: netdev@vger.kernel.org, sgunderson@bigfoot.com, valentyn@blub.net, yoshfuji@linux-ipv6.org, edumazet@google.com To: hannes@stressinduktion.org Return-path: Received: from shards.monkeyblade.net ([149.20.54.216]:36200 "EHLO shards.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753519Ab3JYX1p (ORCPT ); Fri, 25 Oct 2013 19:27:45 -0400 In-Reply-To: <20131024081427.GC15744@order.stressinduktion.org> Sender: netdev-owner@vger.kernel.org List-ID: From: Hannes Frederic Sowa Date: Thu, 24 Oct 2013 10:14:27 +0200 > On receiving a packet too big icmp error we update the expire value by > calling rt6_update_expires. This function uses dst_set_expires which is > implemented that it can only reduce the expiration value of the dst entry. > > If we insert new routing non-expiry information into the ipv6 fib where > we already have a matching rt6_info we only clear the RTF_EXPIRES flag > in rt6i_flags and leave the dst.expires value as is. > > When new mtu information arrives for that cached dst_entry we again > call dst_set_expires. This time it won't update the dst.expire value > because we left the dst.expire value intact from the last update. So > dst_set_expires won't touch dst.expires. > > Fix this by resetting dst.expires when clearing the RTF_EXPIRE flag. > dst_set_expires checks for a zero expiration and updates the > dst.expires. > > In the past this (not updating dst.expires) was necessary because > dst.expire was placed in a union with the dst_entry *from reference > and rt6_clean_expires did assign NULL to it. This split happend in > ecd9883724b78cc72ed92c98bcb1a46c764fff21 ("ipv6: fix race condition > regarding dst->expires and dst->from"). > > Reported-by: Steinar H. Gunderson > Reported-by: Valentijn Sessink > Cc: YOSHIFUJI Hideaki > Acked-by: Eric Dumazet > Tested-by: Valentijn Sessink > Signed-off-by: Hannes Frederic Sowa Applied.