[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20100422023211.GA7109@gondor.apana.org.au>
Date: Thu, 22 Apr 2010 10:32:11 +0800
From: Herbert Xu <herbert@...dor.apana.org.au>
To: Jiri Bohac <jbohac@...e.cz>
Cc: Hideaki YOSHIFUJI <yoshfuji@...ux-ipv6.org>,
netdev@...r.kernel.org, David Miller <davem@...emloft.net>,
Stephen Hemminger <shemminger@...tta.com>
Subject: Re: IPv6: race condition in __ipv6_ifa_notify() and dst_free() ?
On Wed, Apr 21, 2010 at 11:34:29PM +0200, Jiri Bohac wrote:
> Hi,
>
> On Tue, Apr 20, 2010 at 07:44:01PM +0200, Jiri Bohac wrote:
> > What is the reason __ipv6_ifa_notify() calls dst_free() when
> > ip6_del_rt() fails? I don't see a way ip6_del_rt() could fail
> > with the dst still needing to be freed.
>
> checked again and I still think that if ip6_del_rt() fails,
> ifp->rt must have been freed already. Anybody with a
> counterexample?
I agree with your diagnosis and the two duplicate NDISC messages
scenario sounds plausible.
Anyway, I think the root of the issue is the fact that NDISC is
calling addrconf_dad_failure with no locking whatsoever. The
latter is not idempotent so some form of locking is needed.
This bug appears to have been around since the very start.
I'll dig deeper to see where we might be able to add some locks.
Cheers,
--
Visit Openswan at http://www.openswan.org/
Email: Herbert Xu ~{PmV>HI~} <herbert@...dor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists