From: Al Viro <viro-3bDd1+5oDREiFSDQTTA3OLVCufUGDwFn@public.gmane.org>
To: Tejun Heo <tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
Cc: Zefan Li <lizefan-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>,
cgroups-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Subject: Re: [PATCH] Revert "cgroup: remove redundant variable in cgroup_mount()"
Date: Fri, 26 Sep 2014 06:58:25 +0100 [thread overview]
Message-ID: <20140926055825.GO7996@ZenIV.linux.org.uk> (raw)
In-Reply-To: <20140926050457.GB14426-Gd/HAXX7CRxy/B6EtB590w@public.gmane.org>
On Fri, Sep 26, 2014 at 01:04:57AM -0400, Tejun Heo wrote:
> On Fri, Sep 26, 2014 at 05:53:52AM +0100, Al Viro wrote:
> > On Fri, Sep 26, 2014 at 12:26:17AM -0400, Tejun Heo wrote:
> > > On Fri, Sep 26, 2014 at 12:03:25PM +0800, Zefan Li wrote:
> > > > This reverts commit 0c7bf3e8cab7900e17ce7f97104c39927d835469.
> ...
> > > > Cc: Al Viro <viro-3bDd1+5oDREiFSDQTTA3OLVCufUGDwFn@public.gmane.org>
> > > > Reported-by: Andrey Wagin <avagin-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
> > > > Signed-off-by: Zefan Li <lizefan-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
> > >
> > > Applied to cgroup/for-3.18.
> >
> > Er? It's a clear regression since 3.16; shouldn't it go into mainline
> > before 3.17-final? Another thing: AFAICS, if kernfs_fill_super() fails,
>
> Hmmm? This is reverting 0c7bf3e8cab7 which was committed six days ago
> to cgroup/for-3.18.
*blink*
Right you are, I forgot that the tree I'm currently in gets -next as one of
remotes, so seeing that commit there doesn't imply it being in mainline.
My apologies. I plead going near-blind from digging through shitloads of
callchains leading to __d_move() and __d_rehash() since yesterday ;-/
Oh, well - looks like either I'll go completely insane or fs/dcache.c will
shrink quite a bit come next cycle...
> > you get unbalanced kernfs_put() on the cleanup path - kernfs_kill_sb()
> > will be called in those cases as well. IOW, we'd better move that
> > kernfs_get(info->root->kn);
> > in kernfs_fill_super() all way up to the point before kernfs_get_inode().
> > Something like this:
> >
> > Signed-off-by: Al Viro <viro-RmSDqhL/yNMiFSDQTTA3OLVCufUGDwFn@public.gmane.org>
> > ---
> > diff --git a/fs/kernfs/mount.c b/fs/kernfs/mount.c
> > index f973ae9..e5e92e3 100644
> > --- a/fs/kernfs/mount.c
> > +++ b/fs/kernfs/mount.c
> > @@ -74,6 +74,7 @@ static int kernfs_fill_super(struct super_block *sb, unsigned long magic)
> > sb->s_magic = magic;
> > sb->s_op = &kernfs_sops;
> > sb->s_time_gran = 1;
> > + kernfs_get(info->root->kn);
> >
> > /* get root inode, initialize and unlock it */
> > mutex_lock(&kernfs_mutex);
> > @@ -90,7 +91,6 @@ static int kernfs_fill_super(struct super_block *sb, unsigned long magic)
> > pr_debug("%s: could not get root dentry!\n", __func__);
> > return -ENOMEM;
> > }
> > - kernfs_get(info->root->kn);
>
> Ooh, right. Will test & send the patch to Greg.
OK... You'll need some way to force those failures to be able to test it -
they are normally triggered when you are very low on memory, i.e. the failure
exits won't trigger on normal testing (and near OOM you could easily fail
not reaching that point at all).
Normally I'm doing such testing by something like slapping
if (!strcmp(current->comm, "bugger"))
return -ENOMEM;
in there, followed by cp /bin/mount /tmp/bugger; /tmp/bugger -t cgroup <...>
Hell knows, maybe it would be worth to add a debugging option that would
check some sysctl and if it's non-zero, looked through the call chain in
kmem_cache_alloc() in search of such address, failing allocation if found.
Never got around to doing it properly, might or might not be useful...
WARNING: multiple messages have this Message-ID (diff)
From: Al Viro <viro@ZenIV.linux.org.uk>
To: Tejun Heo <tj@kernel.org>
Cc: Zefan Li <lizefan@huawei.com>,
cgroups@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] Revert "cgroup: remove redundant variable in cgroup_mount()"
Date: Fri, 26 Sep 2014 06:58:25 +0100 [thread overview]
Message-ID: <20140926055825.GO7996@ZenIV.linux.org.uk> (raw)
In-Reply-To: <20140926050457.GB14426@htj.dyndns.org>
On Fri, Sep 26, 2014 at 01:04:57AM -0400, Tejun Heo wrote:
> On Fri, Sep 26, 2014 at 05:53:52AM +0100, Al Viro wrote:
> > On Fri, Sep 26, 2014 at 12:26:17AM -0400, Tejun Heo wrote:
> > > On Fri, Sep 26, 2014 at 12:03:25PM +0800, Zefan Li wrote:
> > > > This reverts commit 0c7bf3e8cab7900e17ce7f97104c39927d835469.
> ...
> > > > Cc: Al Viro <viro@ZenIV.linux.org.uk>
> > > > Reported-by: Andrey Wagin <avagin@gmail.com>
> > > > Signed-off-by: Zefan Li <lizefan@huawei.com>
> > >
> > > Applied to cgroup/for-3.18.
> >
> > Er? It's a clear regression since 3.16; shouldn't it go into mainline
> > before 3.17-final? Another thing: AFAICS, if kernfs_fill_super() fails,
>
> Hmmm? This is reverting 0c7bf3e8cab7 which was committed six days ago
> to cgroup/for-3.18.
*blink*
Right you are, I forgot that the tree I'm currently in gets -next as one of
remotes, so seeing that commit there doesn't imply it being in mainline.
My apologies. I plead going near-blind from digging through shitloads of
callchains leading to __d_move() and __d_rehash() since yesterday ;-/
Oh, well - looks like either I'll go completely insane or fs/dcache.c will
shrink quite a bit come next cycle...
> > you get unbalanced kernfs_put() on the cleanup path - kernfs_kill_sb()
> > will be called in those cases as well. IOW, we'd better move that
> > kernfs_get(info->root->kn);
> > in kernfs_fill_super() all way up to the point before kernfs_get_inode().
> > Something like this:
> >
> > Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
> > ---
> > diff --git a/fs/kernfs/mount.c b/fs/kernfs/mount.c
> > index f973ae9..e5e92e3 100644
> > --- a/fs/kernfs/mount.c
> > +++ b/fs/kernfs/mount.c
> > @@ -74,6 +74,7 @@ static int kernfs_fill_super(struct super_block *sb, unsigned long magic)
> > sb->s_magic = magic;
> > sb->s_op = &kernfs_sops;
> > sb->s_time_gran = 1;
> > + kernfs_get(info->root->kn);
> >
> > /* get root inode, initialize and unlock it */
> > mutex_lock(&kernfs_mutex);
> > @@ -90,7 +91,6 @@ static int kernfs_fill_super(struct super_block *sb, unsigned long magic)
> > pr_debug("%s: could not get root dentry!\n", __func__);
> > return -ENOMEM;
> > }
> > - kernfs_get(info->root->kn);
>
> Ooh, right. Will test & send the patch to Greg.
OK... You'll need some way to force those failures to be able to test it -
they are normally triggered when you are very low on memory, i.e. the failure
exits won't trigger on normal testing (and near OOM you could easily fail
not reaching that point at all).
Normally I'm doing such testing by something like slapping
if (!strcmp(current->comm, "bugger"))
return -ENOMEM;
in there, followed by cp /bin/mount /tmp/bugger; /tmp/bugger -t cgroup <...>
Hell knows, maybe it would be worth to add a debugging option that would
check some sysctl and if it's non-zero, looked through the call chain in
kmem_cache_alloc() in search of such address, failing allocation if found.
Never got around to doing it properly, might or might not be useful...
next prev parent reply other threads:[~2014-09-26 5:58 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <1411704205-28995-1-git-send-email-lizefan@huawei.com>
[not found] ` <1411704205-28995-1-git-send-email-lizefan-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
2014-09-26 4:26 ` [PATCH] Revert "cgroup: remove redundant variable in cgroup_mount()" Tejun Heo
2014-09-26 4:26 ` Tejun Heo
[not found] ` <20140926042617.GA14426-Gd/HAXX7CRxy/B6EtB590w@public.gmane.org>
2014-09-26 4:53 ` Al Viro
2014-09-26 4:53 ` Al Viro
[not found] ` <20140926045352.GN7996-3bDd1+5oDREiFSDQTTA3OLVCufUGDwFn@public.gmane.org>
2014-09-26 5:04 ` Tejun Heo
2014-09-26 5:04 ` Tejun Heo
[not found] ` <20140926050457.GB14426-Gd/HAXX7CRxy/B6EtB590w@public.gmane.org>
2014-09-26 5:58 ` Al Viro [this message]
2014-09-26 5:58 ` Al Viro
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=20140926055825.GO7996@ZenIV.linux.org.uk \
--to=viro-3bdd1+5odreifsdqtta3olvcufugdwfn@public.gmane.org \
--cc=cgroups-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=lizefan-hv44wF8Li93QT0dZR+AlfA@public.gmane.org \
--cc=tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.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.