mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2025-04-14 16:57:40 +07:00
Rename nsproxy.pid_ns to nsproxy.pid_ns_for_children
nsproxy.pid_ns is *not* the task's pid namespace. The name should clarify that. This makes it more obvious that setns on a pid namespace is weird -- it won't change the pid namespace shown in procfs. Signed-off-by: Andy Lutomirski <luto@amacapital.net> Reviewed-by: "Eric W. Biederman" <ebiederm@xmission.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
d661684cf6
commit
c2b1df2eb4
@ -14,6 +14,10 @@ struct fs_struct;
|
|||||||
* A structure to contain pointers to all per-process
|
* A structure to contain pointers to all per-process
|
||||||
* namespaces - fs (mount), uts, network, sysvipc, etc.
|
* namespaces - fs (mount), uts, network, sysvipc, etc.
|
||||||
*
|
*
|
||||||
|
* The pid namespace is an exception -- it's accessed using
|
||||||
|
* task_active_pid_ns. The pid namespace here is the
|
||||||
|
* namespace that children will use.
|
||||||
|
*
|
||||||
* 'count' is the number of tasks holding a reference.
|
* 'count' is the number of tasks holding a reference.
|
||||||
* The count for each namespace, then, will be the number
|
* The count for each namespace, then, will be the number
|
||||||
* of nsproxies pointing to it, not the number of tasks.
|
* of nsproxies pointing to it, not the number of tasks.
|
||||||
@ -27,7 +31,7 @@ struct nsproxy {
|
|||||||
struct uts_namespace *uts_ns;
|
struct uts_namespace *uts_ns;
|
||||||
struct ipc_namespace *ipc_ns;
|
struct ipc_namespace *ipc_ns;
|
||||||
struct mnt_namespace *mnt_ns;
|
struct mnt_namespace *mnt_ns;
|
||||||
struct pid_namespace *pid_ns;
|
struct pid_namespace *pid_ns_for_children;
|
||||||
struct net *net_ns;
|
struct net *net_ns;
|
||||||
};
|
};
|
||||||
extern struct nsproxy init_nsproxy;
|
extern struct nsproxy init_nsproxy;
|
||||||
|
@ -1177,7 +1177,8 @@ static struct task_struct *copy_process(unsigned long clone_flags,
|
|||||||
* don't allow the creation of threads.
|
* don't allow the creation of threads.
|
||||||
*/
|
*/
|
||||||
if ((clone_flags & (CLONE_VM|CLONE_NEWPID)) &&
|
if ((clone_flags & (CLONE_VM|CLONE_NEWPID)) &&
|
||||||
(task_active_pid_ns(current) != current->nsproxy->pid_ns))
|
(task_active_pid_ns(current) !=
|
||||||
|
current->nsproxy->pid_ns_for_children))
|
||||||
return ERR_PTR(-EINVAL);
|
return ERR_PTR(-EINVAL);
|
||||||
|
|
||||||
retval = security_task_create(clone_flags);
|
retval = security_task_create(clone_flags);
|
||||||
@ -1351,7 +1352,7 @@ static struct task_struct *copy_process(unsigned long clone_flags,
|
|||||||
|
|
||||||
if (pid != &init_struct_pid) {
|
if (pid != &init_struct_pid) {
|
||||||
retval = -ENOMEM;
|
retval = -ENOMEM;
|
||||||
pid = alloc_pid(p->nsproxy->pid_ns);
|
pid = alloc_pid(p->nsproxy->pid_ns_for_children);
|
||||||
if (!pid)
|
if (!pid)
|
||||||
goto bad_fork_cleanup_io;
|
goto bad_fork_cleanup_io;
|
||||||
}
|
}
|
||||||
|
@ -35,7 +35,7 @@ struct nsproxy init_nsproxy = {
|
|||||||
.ipc_ns = &init_ipc_ns,
|
.ipc_ns = &init_ipc_ns,
|
||||||
#endif
|
#endif
|
||||||
.mnt_ns = NULL,
|
.mnt_ns = NULL,
|
||||||
.pid_ns = &init_pid_ns,
|
.pid_ns_for_children = &init_pid_ns,
|
||||||
#ifdef CONFIG_NET
|
#ifdef CONFIG_NET
|
||||||
.net_ns = &init_net,
|
.net_ns = &init_net,
|
||||||
#endif
|
#endif
|
||||||
@ -85,9 +85,10 @@ static struct nsproxy *create_new_namespaces(unsigned long flags,
|
|||||||
goto out_ipc;
|
goto out_ipc;
|
||||||
}
|
}
|
||||||
|
|
||||||
new_nsp->pid_ns = copy_pid_ns(flags, user_ns, tsk->nsproxy->pid_ns);
|
new_nsp->pid_ns_for_children =
|
||||||
if (IS_ERR(new_nsp->pid_ns)) {
|
copy_pid_ns(flags, user_ns, tsk->nsproxy->pid_ns_for_children);
|
||||||
err = PTR_ERR(new_nsp->pid_ns);
|
if (IS_ERR(new_nsp->pid_ns_for_children)) {
|
||||||
|
err = PTR_ERR(new_nsp->pid_ns_for_children);
|
||||||
goto out_pid;
|
goto out_pid;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -100,8 +101,8 @@ static struct nsproxy *create_new_namespaces(unsigned long flags,
|
|||||||
return new_nsp;
|
return new_nsp;
|
||||||
|
|
||||||
out_net:
|
out_net:
|
||||||
if (new_nsp->pid_ns)
|
if (new_nsp->pid_ns_for_children)
|
||||||
put_pid_ns(new_nsp->pid_ns);
|
put_pid_ns(new_nsp->pid_ns_for_children);
|
||||||
out_pid:
|
out_pid:
|
||||||
if (new_nsp->ipc_ns)
|
if (new_nsp->ipc_ns)
|
||||||
put_ipc_ns(new_nsp->ipc_ns);
|
put_ipc_ns(new_nsp->ipc_ns);
|
||||||
@ -174,8 +175,8 @@ void free_nsproxy(struct nsproxy *ns)
|
|||||||
put_uts_ns(ns->uts_ns);
|
put_uts_ns(ns->uts_ns);
|
||||||
if (ns->ipc_ns)
|
if (ns->ipc_ns)
|
||||||
put_ipc_ns(ns->ipc_ns);
|
put_ipc_ns(ns->ipc_ns);
|
||||||
if (ns->pid_ns)
|
if (ns->pid_ns_for_children)
|
||||||
put_pid_ns(ns->pid_ns);
|
put_pid_ns(ns->pid_ns_for_children);
|
||||||
put_net(ns->net_ns);
|
put_net(ns->net_ns);
|
||||||
kmem_cache_free(nsproxy_cachep, ns);
|
kmem_cache_free(nsproxy_cachep, ns);
|
||||||
}
|
}
|
||||||
|
@ -349,8 +349,8 @@ static int pidns_install(struct nsproxy *nsproxy, void *ns)
|
|||||||
if (ancestor != active)
|
if (ancestor != active)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
put_pid_ns(nsproxy->pid_ns);
|
put_pid_ns(nsproxy->pid_ns_for_children);
|
||||||
nsproxy->pid_ns = get_pid_ns(new);
|
nsproxy->pid_ns_for_children = get_pid_ns(new);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user