diff options
author | Kinglong Mee <kinglongmee@gmail.com> | 2015-07-30 21:41:08 +0800 |
---|---|---|
committer | Trond Myklebust <trond.myklebust@primarydata.com> | 2015-08-12 14:42:23 -0400 |
commit | 5ef8d792fabedeb932375b23735bc7a1a3e8684d (patch) | |
tree | 44953db1bed63c36a440e3cd8752d08873520624 | |
parent | efcbc04e16dfa95fef76309f89710dd1d99a5453 (diff) | |
download | linux-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.c | 7 |
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: |