NFS: Error out when register_shrinker fail in register_nfs_fs
authorKinglong Mee <kinglongmee@gmail.com>
Thu, 30 Jul 2015 13:41:08 +0000 (21:41 +0800)
committerTrond Myklebust <trond.myklebust@primarydata.com>
Wed, 12 Aug 2015 18:42:23 +0000 (14:42 -0400)
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>
fs/nfs/super.c

index aa62004f1706f9c685b368379ce021c1f3474c72..383a027de4528d74bd976cc5bfa237be653c5e77 100644 (file)
@@ -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: