| From foo@baz Wed Feb 28 16:16:23 CET 2018 |
| From: Al Viro <viro@zeniv.linux.org.uk> |
| Date: Mon, 18 Dec 2017 15:05:07 -0500 |
| Subject: sget(): handle failures of register_shrinker() |
| |
| From: Al Viro <viro@zeniv.linux.org.uk> |
| |
| |
| [ Upstream commit 9ee332d99e4d5a97548943b81c54668450ce641b ] |
| |
| Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> |
| Signed-off-by: Sasha Levin <alexander.levin@microsoft.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| fs/super.c | 6 +++++- |
| 1 file changed, 5 insertions(+), 1 deletion(-) |
| |
| --- a/fs/super.c |
| +++ b/fs/super.c |
| @@ -476,7 +476,11 @@ retry: |
| hlist_add_head(&s->s_instances, &type->fs_supers); |
| spin_unlock(&sb_lock); |
| get_filesystem(type); |
| - register_shrinker(&s->s_shrink); |
| + err = register_shrinker(&s->s_shrink); |
| + if (err) { |
| + deactivate_locked_super(s); |
| + s = ERR_PTR(err); |
| + } |
| return s; |
| } |
| |