summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKinglong Mee <kinglongmee@gmail.com>2015-07-30 21:41:08 +0800
committerTrond Myklebust <trond.myklebust@primarydata.com>2015-08-12 14:42:23 -0400
commit5ef8d792fabedeb932375b23735bc7a1a3e8684d (patch)
tree44953db1bed63c36a440e3cd8752d08873520624
parentefcbc04e16dfa95fef76309f89710dd1d99a5453 (diff)
downloadlinux-5ef8d792fabedeb932375b23735bc7a1a3e8684d.tar.gz
linux-5ef8d792fabedeb932375b23735bc7a1a3e8684d.tar.bz2
linux-5ef8d792fabedeb932375b23735bc7a1a3e8684d.zip
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 aa62004f1706..383a027de452 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: