[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <20140630142324.GD14807@htj.dyndns.org>
Date: Mon, 30 Jun 2014 10:23:24 -0400
From: Tejun Heo <tj@...nel.org>
To: Li Zefan <lizefan@...wei.com>
Cc: LKML <linux-kernel@...r.kernel.org>,
Cgroups <cgroups@...r.kernel.org>,
Greg Kroah-Hartman <gregkh@...uxfoundation.org>
Subject: Re: [PATCH v3 3/3] cgroup: fix a race between cgroup_mount() and
cgroup_kill_sb()
Hello, Li.
I applied the three patches with some updates (mostly comments).
Dynamic root management is turning out to be pretty ugly but I think
we can clean it up a bit.
On Mon, Jun 30, 2014 at 11:50:59AM +0800, Li Zefan wrote:
> @@ -1790,6 +1795,17 @@ out_free:
> dentry = kernfs_mount(fs_type, flags, root->kf_root, &new_sb);
> if (IS_ERR(dentry) || !new_sb)
> cgroup_put(&root->cgrp);
> +
> + if (sb) {
> + /*
> + * On success kernfs_mount() returns with sb->s_umount held,
> + * but kernfs_mount() also increases the superblock's refcnt,
> + * so calling deactivate_super() to drop the refcnt we got when
> + * looking up cgroup root won't acquire sb->s_umount again.
> + */
> + WARN_ON(new_sb);
> + deactivate_super(sb);
> + }
So, @new_sb and @sb indicate the same conditions now. When we reuse
an existing root, we always reuse its sb too which means that we at
least no longer need the @new_sb ugliness. I actually kinda prefer it
as this means that the ugliness is confined to one ugly function -
kernfs_pin_sb() - instead of the generic kernfs_mount(). Can you
please prepare patches to clean these up? I'll pull in for-3.16-fixes
into for-3.17 and apply the cleanup on top.
Thanks!
--
tejun
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists