[DECNET]: Fix RCU race condition in dn_neigh_construct().
authorPaul E. McKenney <paulmck@us.ibm.com>
Wed, 17 Aug 2005 19:05:27 +0000 (12:05 -0700)
committerDavid S. Miller <davem@davemloft.net>
Wed, 17 Aug 2005 19:05:27 +0000 (12:05 -0700)
Signed-off-by: Paul E. McKenney <paulmck@us.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/decnet/dn_neigh.c

index f32dba9e26fe45942fc1334e08410abbc2722b46..8d0cc3cf3e491a636f258af31262b36f54a1efa4 100644 (file)
@@ -148,12 +148,12 @@ static int dn_neigh_construct(struct neighbour *neigh)
 
        __neigh_parms_put(neigh->parms);
        neigh->parms = neigh_parms_clone(parms);
-       rcu_read_unlock();
 
        if (dn_db->use_long)
                neigh->ops = &dn_long_ops;
        else
                neigh->ops = &dn_short_ops;
+       rcu_read_unlock();
 
        if (dn->flags & DN_NDFLAG_P3)
                neigh->ops = &dn_phase3_ops;