netdev
[Top] [All Lists]

Re: neigh_create/inetdev_destroy race?

To: "David S. Miller" <davem@xxxxxxxxxx>
Subject: Re: neigh_create/inetdev_destroy race?
From: Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx>
Date: Mon, 16 Aug 2004 20:51:31 +1000
Cc: shemminger@xxxxxxxx, netdev@xxxxxxxxxxx
In-reply-to: <20040815191450.77532d5d.davem@xxxxxxxxxx>
References: <20040813215602.GA15870@xxxxxxxxxxxxxxxxxxx> <20040813151923.3311b4f0.davem@xxxxxxxxxx> <20040814003428.GA17760@xxxxxxxxxxxxxxxxxxx> <20040813173924.6d05be15.davem@xxxxxxxxxx> <20040814005411.GA18350@xxxxxxxxxxxxxxxxxxx> <20040814012513.GA721@xxxxxxxxxxxxxxxxxxx> <20040814013030.GA2042@xxxxxxxxxxxxxxxxxxx> <20040814050848.GA11874@xxxxxxxxxxxxxxxxxxx> <20040814062703.GA4806@xxxxxxxxxxxxxxxxxxx> <20040815191450.77532d5d.davem@xxxxxxxxxx>
Sender: netdev-bounce@xxxxxxxxxxx
User-agent: Mutt/1.5.6+20040523i
On Sun, Aug 15, 2004 at 07:14:50PM -0700, David S. Miller wrote:
> On Sat, 14 Aug 2004 16:27:03 +1000
> Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx> wrote:
> 
> > Is there any thing that prevents the following scenario from occuring?
> > 
> > CPU0                                        CPU1
> > neigh_create
> >                                     inet_del_ifa
> >                                             notifier_call_chain
> >                                                     neigh_ifdown
> >                                             inetdev_destroy
> >     arp_constructor
> >             neigh->parms =
> >                     in_dev->arp_parms
> >                                                     in_dev->dead = 1
> >                                                     in_dev->dev->ip_ptr =
> >                                                             NULL
> >                                                     neigh_parms_release
> >     n->parms->neigh_setup => BUG
> 
> Is there anything other than hostess_sv11.c, sealevel.c, and shaper.c
> which are using n->parms->neigh_setup at all?
> 
> This seems to be a very obscure special case hack, which perhaps we
> can removee entirely.

That maybe the case, but the race has nothing to do with neigh_setup.

Even if you remove neigh_setup altogether, the very next line in
neigh_create will dereference n->parms by looking up base_reachable_time.

Cheers,
-- 
Visit Openswan at http://www.openswan.org/
Email: Herbert Xu ~{PmV>HI~} <herbert@xxxxxxxxxxxxxxxxxxx>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt

<Prev in Thread] Current Thread [Next in Thread>