projects
/
linux-2.6-block.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge tag 'sound-fix-3.19-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai...
[linux-2.6-block.git]
/
ipc
/
namespace.c
diff --git
a/ipc/namespace.c
b/ipc/namespace.c
index 1a3ffd40356e37d0270c18fde4765c50dd6872a8..068caf18d56509711e46b47b25a363254d681abe 100644
(file)
--- a/
ipc/namespace.c
+++ b/
ipc/namespace.c
@@
-26,16
+26,17
@@
static struct ipc_namespace *create_ipc_ns(struct user_namespace *user_ns,
if (ns == NULL)
return ERR_PTR(-ENOMEM);
if (ns == NULL)
return ERR_PTR(-ENOMEM);
- err =
proc_alloc_inum(&ns->proc_inum
);
+ err =
ns_alloc_inum(&ns->ns
);
if (err) {
kfree(ns);
return ERR_PTR(err);
}
if (err) {
kfree(ns);
return ERR_PTR(err);
}
+ ns->ns.ops = &ipcns_operations;
atomic_set(&ns->count, 1);
err = mq_init_ns(ns);
if (err) {
atomic_set(&ns->count, 1);
err = mq_init_ns(ns);
if (err) {
-
proc_free_inum(ns->proc_inum
);
+
ns_free_inum(&ns->ns
);
kfree(ns);
return ERR_PTR(err);
}
kfree(ns);
return ERR_PTR(err);
}
@@
-97,7
+98,7
@@
static void free_ipc_ns(struct ipc_namespace *ns)
atomic_dec(&nr_ipc_ns);
put_user_ns(ns->user_ns);
atomic_dec(&nr_ipc_ns);
put_user_ns(ns->user_ns);
-
proc_free_inum(ns->proc_inum
);
+
ns_free_inum(&ns->ns
);
kfree(ns);
}
kfree(ns);
}
@@
-127,7
+128,12
@@
void put_ipc_ns(struct ipc_namespace *ns)
}
}
}
}
-static void *ipcns_get(struct task_struct *task)
+static inline struct ipc_namespace *to_ipc_ns(struct ns_common *ns)
+{
+ return container_of(ns, struct ipc_namespace, ns);
+}
+
+static struct ns_common *ipcns_get(struct task_struct *task)
{
struct ipc_namespace *ns = NULL;
struct nsproxy *nsproxy;
{
struct ipc_namespace *ns = NULL;
struct nsproxy *nsproxy;
@@
-138,17
+144,17
@@
static void *ipcns_get(struct task_struct *task)
ns = get_ipc_ns(nsproxy->ipc_ns);
task_unlock(task);
ns = get_ipc_ns(nsproxy->ipc_ns);
task_unlock(task);
- return ns;
+ return ns
? &ns->ns : NULL
;
}
}
-static void ipcns_put(
void
*ns)
+static void ipcns_put(
struct ns_common
*ns)
{
{
- return put_ipc_ns(
ns
);
+ return put_ipc_ns(
to_ipc_ns(ns)
);
}
}
-static int ipcns_install(struct nsproxy *nsproxy,
void
*new)
+static int ipcns_install(struct nsproxy *nsproxy,
struct ns_common
*new)
{
{
- struct ipc_namespace *ns =
new
;
+ struct ipc_namespace *ns =
to_ipc_ns(new)
;
if (!ns_capable(ns->user_ns, CAP_SYS_ADMIN) ||
!ns_capable(current_user_ns(), CAP_SYS_ADMIN))
return -EPERM;
if (!ns_capable(ns->user_ns, CAP_SYS_ADMIN) ||
!ns_capable(current_user_ns(), CAP_SYS_ADMIN))
return -EPERM;
@@
-160,18
+166,10
@@
static int ipcns_install(struct nsproxy *nsproxy, void *new)
return 0;
}
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,
const struct proc_ns_operations ipcns_operations = {
.name = "ipc",
.type = CLONE_NEWIPC,
.get = ipcns_get,
.put = ipcns_put,
.install = ipcns_install,
- .inum = ipcns_inum,
};
};