Re: [PATCH 4.4 06/34] sget(): handle failures of register_shrinker()
On Fri, 2018-03-02 at 09:51 +0100, Greg Kroah-Hartman wrote: > 4.4-stable review patch. If anyone has any objections, please let me know. > > -- > > From: Al Viro> > > [ Upstream commit 9ee332d99e4d5a97548943b81c54668450ce641b ] > > Signed-off-by: Al Viro > Signed-off-by: Sasha Levin > Signed-off-by: Greg Kroah-Hartman > --- > fs/super.c |6 +- > 1 file changed, 5 insertions(+), 1 deletion(-) > > --- a/fs/super.c > +++ b/fs/super.c > @@ -497,7 +497,11 @@ retry: > hlist_add_head(>s_instances, >fs_supers); > spin_unlock(_lock); > get_filesystem(type); > - register_shrinker(>s_shrink); > + err = register_shrinker(>s_shrink); > + if (err) { > + deactivate_locked_super(s); But deactivate_locked_super() will call unregister_shrinker(), which doesn't look safe if register_shrinker() failed. Ben. > + s = ERR_PTR(err); > + } > return s; > } > > > > -- Ben Hutchings Software Developer, Codethink Ltd.
Re: [PATCH 4.4 06/34] sget(): handle failures of register_shrinker()
On Fri, 2018-03-02 at 09:51 +0100, Greg Kroah-Hartman wrote: > 4.4-stable review patch. If anyone has any objections, please let me know. > > -- > > From: Al Viro > > > [ Upstream commit 9ee332d99e4d5a97548943b81c54668450ce641b ] > > Signed-off-by: Al Viro > Signed-off-by: Sasha Levin > Signed-off-by: Greg Kroah-Hartman > --- > fs/super.c |6 +- > 1 file changed, 5 insertions(+), 1 deletion(-) > > --- a/fs/super.c > +++ b/fs/super.c > @@ -497,7 +497,11 @@ retry: > hlist_add_head(>s_instances, >fs_supers); > spin_unlock(_lock); > get_filesystem(type); > - register_shrinker(>s_shrink); > + err = register_shrinker(>s_shrink); > + if (err) { > + deactivate_locked_super(s); But deactivate_locked_super() will call unregister_shrinker(), which doesn't look safe if register_shrinker() failed. Ben. > + s = ERR_PTR(err); > + } > return s; > } > > > > -- Ben Hutchings Software Developer, Codethink Ltd.
[PATCH 4.4 06/34] sget(): handle failures of register_shrinker()
4.4-stable review patch. If anyone has any objections, please let me know. -- From: Al Viro[ Upstream commit 9ee332d99e4d5a97548943b81c54668450ce641b ] Signed-off-by: Al Viro Signed-off-by: Sasha Levin Signed-off-by: Greg Kroah-Hartman --- fs/super.c |6 +- 1 file changed, 5 insertions(+), 1 deletion(-) --- a/fs/super.c +++ b/fs/super.c @@ -497,7 +497,11 @@ retry: hlist_add_head(>s_instances, >fs_supers); spin_unlock(_lock); get_filesystem(type); - register_shrinker(>s_shrink); + err = register_shrinker(>s_shrink); + if (err) { + deactivate_locked_super(s); + s = ERR_PTR(err); + } return s; }
[PATCH 4.4 06/34] sget(): handle failures of register_shrinker()
4.4-stable review patch. If anyone has any objections, please let me know. -- From: Al Viro [ Upstream commit 9ee332d99e4d5a97548943b81c54668450ce641b ] Signed-off-by: Al Viro Signed-off-by: Sasha Levin Signed-off-by: Greg Kroah-Hartman --- fs/super.c |6 +- 1 file changed, 5 insertions(+), 1 deletion(-) --- a/fs/super.c +++ b/fs/super.c @@ -497,7 +497,11 @@ retry: hlist_add_head(>s_instances, >fs_supers); spin_unlock(_lock); get_filesystem(type); - register_shrinker(>s_shrink); + err = register_shrinker(>s_shrink); + if (err) { + deactivate_locked_super(s); + s = ERR_PTR(err); + } return s; }