From: Cong Wang <xiyou.wangc...@gmail.com> Date: Wed, 16 Nov 2016 09:29:29 -0800
> On Wed, Nov 16, 2016 at 1:49 AM, Nicolas Dichtel > <nicolas.dich...@6wind.com> wrote: >> diff --git a/net/core/net_namespace.c b/net/core/net_namespace.c >> index f61c0e02a413..63f65387f4e1 100644 >> --- a/net/core/net_namespace.c >> +++ b/net/core/net_namespace.c >> @@ -159,6 +159,9 @@ static int alloc_netid(struct net *net, struct net >> *peer, int reqid) >> max = reqid + 1; >> } >> >> + if (!atomic_read(&net->count) || !atomic_read(&peer->count)) >> + return -EINVAL; >> + >> return idr_alloc(&net->netns_ids, peer, min, max, GFP_ATOMIC); >> } > > > There is already a check in peernet2id_alloc(), so why not just the following? > > diff --git a/net/core/net_namespace.c b/net/core/net_namespace.c > index f61c0e0..7001da9 100644 > --- a/net/core/net_namespace.c > +++ b/net/core/net_namespace.c > @@ -219,6 +219,8 @@ int peernet2id_alloc(struct net *net, struct net *peer) > bool alloc; > int id; > > + if (atomic_read(&net->count) == 0) > + return NETNSA_NSID_NOT_ASSIGNED; > spin_lock_irqsave(&net->nsid_lock, flags); > alloc = atomic_read(&peer->count) == 0 ? false : true; > id = __peernet2id_alloc(net, peer, &alloc); Indeed, this looks cleaner, Nicolas?