summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKinglong Mee <kinglongmee@gmail.com>2015-07-30 13:41:08 (GMT)
committerTrond Myklebust <trond.myklebust@primarydata.com>2015-08-12 18:42:23 (GMT)
commit5ef8d792fabedeb932375b23735bc7a1a3e8684d (patch)
tree44953db1bed63c36a440e3cd8752d08873520624
parentefcbc04e16dfa95fef76309f89710dd1d99a5453 (diff)
downloadlinux-5ef8d792fabedeb932375b23735bc7a1a3e8684d.tar.xz
NFS: Error out when register_shrinker fail in register_nfs_fs
Commit 1d3d4437ea "vmscan: per-node deferred work" have made register_shrinker can return an intergater error. If register_shrinker() fail, the later unregister_shrinker() will cause a NULL pointer access. v2, same as v1. Signed-off-by: Kinglong Mee <kinglongmee@gmail.com> Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
-rw-r--r--fs/nfs/super.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/fs/nfs/super.c b/fs/nfs/super.c
index aa62004..383a027 100644
--- a/fs/nfs/super.c
+++ b/fs/nfs/super.c
@@ -381,9 +381,12 @@ int __init register_nfs_fs(void)
ret = nfs_register_sysctl();
if (ret < 0)
goto error_2;
- register_shrinker(&acl_shrinker);
+ ret = register_shrinker(&acl_shrinker);
+ if (ret < 0)
+ goto error_3;
return 0;
-
+error_3:
+ nfs_unregister_sysctl();
error_2:
unregister_nfs4_fs();
error_1: