aboutsummaryrefslogtreecommitdiff
path: root/net/core/neighbour.c
diff options
context:
space:
mode:
authorMark Brown <broonie@linaro.org>2013-09-15 13:43:21 +0100
committerMark Brown <broonie@linaro.org>2013-09-15 13:43:21 +0100
commit4ed4d44eb2192604716226a6f0edad02ab76101f (patch)
tree74c2a4041e46b906d89c5880b9cdeb5d768827c4 /net/core/neighbour.c
parentcb03293a043ab9bda850fe143062bd304a9e2376 (diff)
parent410dbb746130bc052bb3c7a337a86252874adbdf (diff)
downloadvexpress-lsk-lsk-13.09.tar.gz
Merge tag 'v3.10.12' into linux-linaro-lsklsk-13.09
This is the 3.10.12 stable release
Diffstat (limited to 'net/core/neighbour.c')
-rw-r--r--net/core/neighbour.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/net/core/neighbour.c b/net/core/neighbour.c
index ce90b0264db..0034b611fa5 100644
--- a/net/core/neighbour.c
+++ b/net/core/neighbour.c
@@ -1445,16 +1445,18 @@ struct neigh_parms *neigh_parms_alloc(struct net_device *dev,
atomic_set(&p->refcnt, 1);
p->reachable_time =
neigh_rand_reach_time(p->base_reachable_time);
+ dev_hold(dev);
+ p->dev = dev;
+ write_pnet(&p->net, hold_net(net));
+ p->sysctl_table = NULL;
if (ops->ndo_neigh_setup && ops->ndo_neigh_setup(dev, p)) {
+ release_net(net);
+ dev_put(dev);
kfree(p);
return NULL;
}
- dev_hold(dev);
- p->dev = dev;
- write_pnet(&p->net, hold_net(net));
- p->sysctl_table = NULL;
write_lock_bh(&tbl->lock);
p->next = tbl->parms.next;
tbl->parms.next = p;