From: Al Viro <viro@ZenIV.linux.org.uk>
To: Andrey Wagin <avagin@gmail.com>
Cc: LKML <linux-kernel@vger.kernel.org>, Tejun Heo <tj@kernel.org>,
Li Zefan <lizefan@huawei.com>
Subject: Re: linux-next: cgroup_mount() falls asleep forever
Date: Wed, 24 Sep 2014 19:52:14 +0100 [thread overview]
Message-ID: <20140924185213.GB7996@ZenIV.linux.org.uk> (raw)
In-Reply-To: <CANaxB-zqeJ0mse0J0=aH4uV+yRdgVhmHbAq4Wa8tW-81sNSMJA@mail.gmail.com>
On Wed, Sep 24, 2014 at 06:29:27PM +0400, Andrey Wagin wrote:
> 2014-09-24 14:31 GMT+04:00 Andrey Wagin <avagin@gmail.com>:
> > Hi All,
>
> The problem is in a following commit:
>
> commit 0c7bf3e8cab7900e17ce7f97104c39927d835469
> Author: Zefan Li <lizefan@huawei.com>
> Date: Sat Sep 20 14:49:10 2014 +0800
>
> cgroup: remove redundant variable in cgroup_mount()
>
> Both pinned_sb and new_sb indicate if a new superblock is needed,
> so we can just remove new_sb.
>
> Note now we must check if kernfs_tryget_sb() returns NULL, because
> when it returns NULL, kernfs_mount() may still re-use an existing
> superblock, which is just allocated by another concurent mount.
>
> Suggested-by: Tejun Heo <tj@kernel.org>
> Signed-off-by: Zefan Li <lizefan@huawei.com>
> Signed-off-by: Tejun Heo <tj@kernel.org>
Lovely... First of all, that thing is obviously racy - there's nothing
to prevent another mount happening between these two places. Moreover,
kernfs_mount() calling conventions are really atrocious - pointer to
bool just to indicate that superblock is new?
Could somebody explain WTF is the whole construction trying to do? Not
to mention anything else, what *does* this pinning a superblock protect
from? Suppose we have a superblock for the same root with non-NULL ns
and _that_ gets killed. We get hit by the same
percpu_ref_kill(&root->cgrp.self.refcnt);
so what's the point of pinned_sb? Might as well have just bumped the
refcount, superblock or no superblock. And no, delaying that kernfs_kill_sb()
does you no good whatsoever - again, pinned_sb might have nothing to do with
the superblock we are after.
next prev parent reply other threads:[~2014-09-24 18:52 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-09-24 10:31 linux-next: cgroup_mount() falls asleep forever Andrey Wagin
2014-09-24 14:29 ` Andrey Wagin
2014-09-24 18:31 ` Cong Wang
2014-09-24 18:52 ` Al Viro [this message]
2014-09-24 19:24 ` Tejun Heo
2014-09-25 2:47 ` Al Viro
2014-09-25 3:25 ` Tejun Heo
2014-09-25 10:23 ` Zefan Li
2014-09-25 15:14 ` Tejun Heo
2014-09-24 20:16 ` Al Viro
2014-09-24 16:13 ` Andrey Wagin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20140924185213.GB7996@ZenIV.linux.org.uk \
--to=viro@zeniv.linux.org.uk \
--cc=avagin@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=lizefan@huawei.com \
--cc=tj@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.