diff options
Diffstat (limited to 'ipc/namespace.c')
| -rw-r--r-- | ipc/namespace.c | 16 | 
1 files changed, 16 insertions, 0 deletions
diff --git a/ipc/namespace.c b/ipc/namespace.c index 72c86827779..cf3386a51de 100644 --- a/ipc/namespace.c +++ b/ipc/namespace.c @@ -26,9 +26,16 @@ static struct ipc_namespace *create_ipc_ns(struct user_namespace *user_ns,  	if (ns == NULL)  		return ERR_PTR(-ENOMEM); +	err = proc_alloc_inum(&ns->proc_inum); +	if (err) { +		kfree(ns); +		return ERR_PTR(err); +	} +  	atomic_set(&ns->count, 1);  	err = mq_init_ns(ns);  	if (err) { +		proc_free_inum(ns->proc_inum);  		kfree(ns);  		return ERR_PTR(err);  	} @@ -111,6 +118,7 @@ static void free_ipc_ns(struct ipc_namespace *ns)  	 */  	ipcns_notify(IPCNS_REMOVED);  	put_user_ns(ns->user_ns); +	proc_free_inum(ns->proc_inum);  	kfree(ns);  } @@ -172,10 +180,18 @@ static int ipcns_install(struct nsproxy *nsproxy, void *new)  	return 0;  } +static unsigned int ipcns_inum(void *vp) +{ +	struct ipc_namespace *ns = vp; + +	return ns->proc_inum; +} +  const struct proc_ns_operations ipcns_operations = {  	.name		= "ipc",  	.type		= CLONE_NEWIPC,  	.get		= ipcns_get,  	.put		= ipcns_put,  	.install	= ipcns_install, +	.inum		= ipcns_inum,  };  |