netdev
[Top] [All Lists]

neigh_create/inetdev_destroy race?

To: "David S. Miller" <davem@xxxxxxxxxx>
Subject: neigh_create/inetdev_destroy race?
From: Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx>
Date: Sat, 14 Aug 2004 16:27:03 +1000
Cc: shemminger@xxxxxxxx, netdev@xxxxxxxxxxx
In-reply-to: <20040814050848.GA11874@xxxxxxxxxxxxxxxxxxx>
References: <20040813090314.448c971d@xxxxxxxxxxxxxxxxxxxxx> <20040813093838.6961c0d4.davem@xxxxxxxxxx> <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>
Sender: netdev-bounce@xxxxxxxxxxx
User-agent: Mutt/1.5.6+20040523i
Hi:

I'm going through in_dev_get() callers.  The call in arp_constructor()
looks racy.  It takes in_dev->arp_parms and stores it in neigh->parms.

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

Thanks,
-- 
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>