On 25.06.2020 17:29, Valeriy Vdovin wrote: > Signed-off-by: Valeriy Vdovin <[email protected]>
Reviewed-by: Kirill Tkhai <[email protected]> JFYI comment below > --- > include/linux/ve.h | 7 +++++++ > kernel/ve/ve.c | 6 +++++- > 2 files changed, 12 insertions(+), 1 deletion(-) > > diff --git a/include/linux/ve.h b/include/linux/ve.h > index 3640947..542fd08 100644 > --- a/include/linux/ve.h > +++ b/include/linux/ve.h > @@ -127,6 +127,13 @@ struct ve_struct { > struct kmapset_key sysfs_perms_key; > > struct workqueue_struct *wq; > + > + /* > + * All tasks, that belong to this ve, live > + * in cgroups, that are children to cgroups > + * that form this css_set. > + */ > + struct css_set *root_css_set; > }; > > struct ve_devmnt { > diff --git a/kernel/ve/ve.c b/kernel/ve/ve.c > index 32c9598..73cfee6 100644 > --- a/kernel/ve/ve.c > +++ b/kernel/ve/ve.c > @@ -453,6 +453,8 @@ static void ve_grab_context(struct ve_struct *ve) > > get_task_struct(tsk); > ve->init_task = tsk; > + ve->root_css_set = tsk->cgroups; > + get_css_set(ve->root_css_set); This safe for mounting new cgroups. Newly mounted cgroups become appeared in this css_set after cgroup_mount()->link_css_set(). > ve->init_cred = (struct cred *)get_current_cred(); > rcu_assign_pointer(ve->ve_ns, get_nsproxy(tsk->nsproxy)); > ve->ve_netns = get_net(ve->ve_ns->net_ns); > @@ -464,6 +466,9 @@ static void ve_drop_context(struct ve_struct *ve) > struct nsproxy *ve_ns = ve->ve_ns; > struct net *net = ve->ve_netns; > > + put_css_set_taskexit(ve->root_css_set); > + ve->root_css_set = NULL; > + > ve->ve_netns = NULL; > put_net(net); > > @@ -479,7 +484,6 @@ static void ve_drop_context(struct ve_struct *ve) > > put_task_struct(ve->init_task); > ve->init_task = NULL; > - > } > > static const struct timespec zero_time = { }; _______________________________________________ Devel mailing list [email protected] https://lists.openvz.org/mailman/listinfo/devel
