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

Reply via email to