summaryrefslogtreecommitdiffstats
path: root/fs/nfs/super.c
diff options
context:
space:
mode:
authorKinglong Mee2015-07-30 15:41:08 +0200
committerTrond Myklebust2015-08-12 20:42:23 +0200
commit5ef8d792fabedeb932375b23735bc7a1a3e8684d (patch)
tree44953db1bed63c36a440e3cd8752d08873520624 /fs/nfs/super.c
parentNFSv4: don't set SETATTR for O_RDONLY|O_EXCL (diff)
downloadkernel-qcow2-linux-5ef8d792fabedeb932375b23735bc7a1a3e8684d.tar.gz
kernel-qcow2-linux-5ef8d792fabedeb932375b23735bc7a1a3e8684d.tar.xz
kernel-qcow2-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>
Diffstat (limited to 'fs/nfs/super.c')
-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: