lkml.org 
[lkml]   [2014]   [May]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH 1/9] cgroup: use restart_syscall() for mount retries
On 2014/5/10 5:13, Tejun Heo wrote:
> cgroup_mount() uses dumb delay-and-retry logic to wait for cgroup_root
> which is being destroyed. The retry currently loops inside
> cgroup_mount() proper. This patch makes it return with
> restart_syscall() instead so that retry travels out to userland
> boundary.
>
> This slightly simplifies the logic and more importantly makes the
> retry logic behave better when the wait for some reason becomes
> lengthy or infinite by allowing the operation to be suspended or
> terminated from userland.
>
> Signed-off-by: Tejun Heo <tj@kernel.org>
> ---
> kernel/cgroup.c | 5 ++---
> 1 file changed, 2 insertions(+), 3 deletions(-)
>
> diff --git a/kernel/cgroup.c b/kernel/cgroup.c
> index 3083c5a..2755f33 100644
> --- a/kernel/cgroup.c
> +++ b/kernel/cgroup.c
> @@ -1681,7 +1681,7 @@ static struct dentry *cgroup_mount(struct file_system_type *fs_type,
> ret = parse_cgroupfs_options(data, &opts);
> if (ret)
> goto out_unlock;
> -retry:
> +
> /* look for a matching existing root */
> if (!opts.subsys_mask && !opts.none && !opts.name) {
> cgrp_dfl_root_visible = true;
> @@ -1740,8 +1740,7 @@ retry:
> if (!atomic_inc_not_zero(&root->cgrp.refcnt)) {
> mutex_unlock(&cgroup_mutex);
> msleep(10);
> - mutex_lock(&cgroup_mutex);
> - goto retry;
> + return ERR_PTR(restart_syscall());

We leak memory allocated in parse_cgroupfs_options().



\
 
 \ /
  Last update: 2014-05-14 05:21    [W:0.161 / U:0.092 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site