|
|
|
@ -318,7 +318,7 @@ static inline struct pid_namespace *to_pid_ns(struct ns_common *ns) |
|
|
|
|
return container_of(ns, struct pid_namespace, ns); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static void *pidns_get(struct task_struct *task) |
|
|
|
|
static struct ns_common *pidns_get(struct task_struct *task) |
|
|
|
|
{ |
|
|
|
|
struct pid_namespace *ns; |
|
|
|
|
|
|
|
|
@ -331,12 +331,12 @@ static void *pidns_get(struct task_struct *task) |
|
|
|
|
return ns ? &ns->ns : NULL; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static void pidns_put(void *ns) |
|
|
|
|
static void pidns_put(struct ns_common *ns) |
|
|
|
|
{ |
|
|
|
|
put_pid_ns(to_pid_ns(ns)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static int pidns_install(struct nsproxy *nsproxy, void *ns) |
|
|
|
|
static int pidns_install(struct nsproxy *nsproxy, struct ns_common *ns) |
|
|
|
|
{ |
|
|
|
|
struct pid_namespace *active = task_active_pid_ns(current); |
|
|
|
|
struct pid_namespace *ancestor, *new = to_pid_ns(ns); |
|
|
|
@ -367,18 +367,12 @@ static int pidns_install(struct nsproxy *nsproxy, void *ns) |
|
|
|
|
return 0; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static unsigned int pidns_inum(void *ns) |
|
|
|
|
{ |
|
|
|
|
return ((struct ns_common *)ns)->inum; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
const struct proc_ns_operations pidns_operations = { |
|
|
|
|
.name = "pid", |
|
|
|
|
.type = CLONE_NEWPID, |
|
|
|
|
.get = pidns_get, |
|
|
|
|
.put = pidns_put, |
|
|
|
|
.install = pidns_install, |
|
|
|
|
.inum = pidns_inum, |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
static __init int pid_namespaces_init(void) |
|
|
|
|