On Wed, Nov 16, 2016 at 8:17 PM, David Miller <da...@davemloft.net> wrote: > 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?
Yeah, I already sent a formal patch: https://patchwork.ozlabs.org/patch/695747/ since Nicolas' patch doesn't even compile...