diff options
-rw-r--r-- | fs/nfsd/export.c | 3 | ||||
-rw-r--r-- | fs/nfsd/nfs4idmap.c | 8 | ||||
-rw-r--r-- | include/linux/sunrpc/cache.h | 1 | ||||
-rw-r--r-- | net/sunrpc/auth_gss/svcauth_gss.c | 8 | ||||
-rw-r--r-- | net/sunrpc/cache.c | 8 | ||||
-rw-r--r-- | net/sunrpc/sunrpc_syms.c | 6 | ||||
-rw-r--r-- | net/sunrpc/svcauth.c | 1 | ||||
-rw-r--r-- | net/sunrpc/svcauth_unix.c | 1 |
8 files changed, 26 insertions, 10 deletions
diff --git a/fs/nfsd/export.c b/fs/nfsd/export.c index 9a11aa39e2e4..057aff745506 100644 --- a/fs/nfsd/export.c +++ b/fs/nfsd/export.c | |||
@@ -26,6 +26,7 @@ | |||
26 | #include <linux/namei.h> | 26 | #include <linux/namei.h> |
27 | #include <linux/mount.h> | 27 | #include <linux/mount.h> |
28 | #include <linux/hash.h> | 28 | #include <linux/hash.h> |
29 | #include <linux/module.h> | ||
29 | 30 | ||
30 | #include <linux/sunrpc/svc.h> | 31 | #include <linux/sunrpc/svc.h> |
31 | #include <linux/nfsd/nfsd.h> | 32 | #include <linux/nfsd/nfsd.h> |
@@ -221,6 +222,7 @@ static int expkey_show(struct seq_file *m, | |||
221 | } | 222 | } |
222 | 223 | ||
223 | struct cache_detail svc_expkey_cache = { | 224 | struct cache_detail svc_expkey_cache = { |
225 | .owner = THIS_MODULE, | ||
224 | .hash_size = EXPKEY_HASHMAX, | 226 | .hash_size = EXPKEY_HASHMAX, |
225 | .hash_table = expkey_table, | 227 | .hash_table = expkey_table, |
226 | .name = "nfsd.fh", | 228 | .name = "nfsd.fh", |
@@ -456,6 +458,7 @@ static int svc_export_show(struct seq_file *m, | |||
456 | return 0; | 458 | return 0; |
457 | } | 459 | } |
458 | struct cache_detail svc_export_cache = { | 460 | struct cache_detail svc_export_cache = { |
461 | .owner = THIS_MODULE, | ||
459 | .hash_size = EXPORT_HASHMAX, | 462 | .hash_size = EXPORT_HASHMAX, |
460 | .hash_table = export_table, | 463 | .hash_table = export_table, |
461 | .name = "nfsd.export", | 464 | .name = "nfsd.export", |
diff --git a/fs/nfsd/nfs4idmap.c b/fs/nfsd/nfs4idmap.c index 5605a26efc57..13369650cdf9 100644 --- a/fs/nfsd/nfs4idmap.c +++ b/fs/nfsd/nfs4idmap.c | |||
@@ -187,6 +187,7 @@ static int idtoname_parse(struct cache_detail *, char *, int); | |||
187 | static struct ent *idtoname_lookup(struct ent *, int); | 187 | static struct ent *idtoname_lookup(struct ent *, int); |
188 | 188 | ||
189 | static struct cache_detail idtoname_cache = { | 189 | static struct cache_detail idtoname_cache = { |
190 | .owner = THIS_MODULE, | ||
190 | .hash_size = ENT_HASHMAX, | 191 | .hash_size = ENT_HASHMAX, |
191 | .hash_table = idtoname_table, | 192 | .hash_table = idtoname_table, |
192 | .name = "nfs4.idtoname", | 193 | .name = "nfs4.idtoname", |
@@ -320,6 +321,7 @@ static struct ent *nametoid_lookup(struct ent *, int); | |||
320 | static int nametoid_parse(struct cache_detail *, char *, int); | 321 | static int nametoid_parse(struct cache_detail *, char *, int); |
321 | 322 | ||
322 | static struct cache_detail nametoid_cache = { | 323 | static struct cache_detail nametoid_cache = { |
324 | .owner = THIS_MODULE, | ||
323 | .hash_size = ENT_HASHMAX, | 325 | .hash_size = ENT_HASHMAX, |
324 | .hash_table = nametoid_table, | 326 | .hash_table = nametoid_table, |
325 | .name = "nfs4.nametoid", | 327 | .name = "nfs4.nametoid", |
@@ -404,8 +406,10 @@ nfsd_idmap_init(void) | |||
404 | void | 406 | void |
405 | nfsd_idmap_shutdown(void) | 407 | nfsd_idmap_shutdown(void) |
406 | { | 408 | { |
407 | cache_unregister(&idtoname_cache); | 409 | if (cache_unregister(&idtoname_cache)) |
408 | cache_unregister(&nametoid_cache); | 410 | printk(KERN_ERR "nfsd: failed to unregister idtoname cache\n"); |
411 | if (cache_unregister(&nametoid_cache)) | ||
412 | printk(KERN_ERR "nfsd: failed to unregister nametoid cache\n"); | ||
409 | } | 413 | } |
410 | 414 | ||
411 | /* | 415 | /* |
diff --git a/include/linux/sunrpc/cache.h b/include/linux/sunrpc/cache.h index 6864063d1b9f..c4e3ea7cf154 100644 --- a/include/linux/sunrpc/cache.h +++ b/include/linux/sunrpc/cache.h | |||
@@ -60,6 +60,7 @@ struct cache_head { | |||
60 | #define CACHE_NEW_EXPIRY 120 /* keep new things pending confirmation for 120 seconds */ | 60 | #define CACHE_NEW_EXPIRY 120 /* keep new things pending confirmation for 120 seconds */ |
61 | 61 | ||
62 | struct cache_detail { | 62 | struct cache_detail { |
63 | struct module * owner; | ||
63 | int hash_size; | 64 | int hash_size; |
64 | struct cache_head ** hash_table; | 65 | struct cache_head ** hash_table; |
65 | rwlock_t hash_lock; | 66 | rwlock_t hash_lock; |
diff --git a/net/sunrpc/auth_gss/svcauth_gss.c b/net/sunrpc/auth_gss/svcauth_gss.c index 5c8fe3bfc494..e3308195374e 100644 --- a/net/sunrpc/auth_gss/svcauth_gss.c +++ b/net/sunrpc/auth_gss/svcauth_gss.c | |||
@@ -250,6 +250,7 @@ out: | |||
250 | } | 250 | } |
251 | 251 | ||
252 | static struct cache_detail rsi_cache = { | 252 | static struct cache_detail rsi_cache = { |
253 | .owner = THIS_MODULE, | ||
253 | .hash_size = RSI_HASHMAX, | 254 | .hash_size = RSI_HASHMAX, |
254 | .hash_table = rsi_table, | 255 | .hash_table = rsi_table, |
255 | .name = "auth.rpcsec.init", | 256 | .name = "auth.rpcsec.init", |
@@ -436,6 +437,7 @@ out: | |||
436 | } | 437 | } |
437 | 438 | ||
438 | static struct cache_detail rsc_cache = { | 439 | static struct cache_detail rsc_cache = { |
440 | .owner = THIS_MODULE, | ||
439 | .hash_size = RSC_HASHMAX, | 441 | .hash_size = RSC_HASHMAX, |
440 | .hash_table = rsc_table, | 442 | .hash_table = rsc_table, |
441 | .name = "auth.rpcsec.context", | 443 | .name = "auth.rpcsec.context", |
@@ -1074,7 +1076,9 @@ gss_svc_init(void) | |||
1074 | void | 1076 | void |
1075 | gss_svc_shutdown(void) | 1077 | gss_svc_shutdown(void) |
1076 | { | 1078 | { |
1077 | cache_unregister(&rsc_cache); | 1079 | if (cache_unregister(&rsc_cache)) |
1078 | cache_unregister(&rsi_cache); | 1080 | printk(KERN_ERR "auth_rpcgss: failed to unregister rsc cache\n"); |
1081 | if (cache_unregister(&rsi_cache)) | ||
1082 | printk(KERN_ERR "auth_rpcgss: failed to unregister rsi cache\n"); | ||
1079 | svc_auth_unregister(RPC_AUTH_GSS); | 1083 | svc_auth_unregister(RPC_AUTH_GSS); |
1080 | } | 1084 | } |
diff --git a/net/sunrpc/cache.c b/net/sunrpc/cache.c index 900f5bc7e336..f509e9992767 100644 --- a/net/sunrpc/cache.c +++ b/net/sunrpc/cache.c | |||
@@ -177,7 +177,7 @@ void cache_register(struct cache_detail *cd) | |||
177 | cd->proc_ent = proc_mkdir(cd->name, proc_net_rpc); | 177 | cd->proc_ent = proc_mkdir(cd->name, proc_net_rpc); |
178 | if (cd->proc_ent) { | 178 | if (cd->proc_ent) { |
179 | struct proc_dir_entry *p; | 179 | struct proc_dir_entry *p; |
180 | cd->proc_ent->owner = THIS_MODULE; | 180 | cd->proc_ent->owner = cd->owner; |
181 | cd->channel_ent = cd->content_ent = NULL; | 181 | cd->channel_ent = cd->content_ent = NULL; |
182 | 182 | ||
183 | p = create_proc_entry("flush", S_IFREG|S_IRUSR|S_IWUSR, | 183 | p = create_proc_entry("flush", S_IFREG|S_IRUSR|S_IWUSR, |
@@ -185,7 +185,7 @@ void cache_register(struct cache_detail *cd) | |||
185 | cd->flush_ent = p; | 185 | cd->flush_ent = p; |
186 | if (p) { | 186 | if (p) { |
187 | p->proc_fops = &cache_flush_operations; | 187 | p->proc_fops = &cache_flush_operations; |
188 | p->owner = THIS_MODULE; | 188 | p->owner = cd->owner; |
189 | p->data = cd; | 189 | p->data = cd; |
190 | } | 190 | } |
191 | 191 | ||
@@ -195,7 +195,7 @@ void cache_register(struct cache_detail *cd) | |||
195 | cd->channel_ent = p; | 195 | cd->channel_ent = p; |
196 | if (p) { | 196 | if (p) { |
197 | p->proc_fops = &cache_file_operations; | 197 | p->proc_fops = &cache_file_operations; |
198 | p->owner = THIS_MODULE; | 198 | p->owner = cd->owner; |
199 | p->data = cd; | 199 | p->data = cd; |
200 | } | 200 | } |
201 | } | 201 | } |
@@ -205,7 +205,7 @@ void cache_register(struct cache_detail *cd) | |||
205 | cd->content_ent = p; | 205 | cd->content_ent = p; |
206 | if (p) { | 206 | if (p) { |
207 | p->proc_fops = &content_file_operations; | 207 | p->proc_fops = &content_file_operations; |
208 | p->owner = THIS_MODULE; | 208 | p->owner = cd->owner; |
209 | p->data = cd; | 209 | p->data = cd; |
210 | } | 210 | } |
211 | } | 211 | } |
diff --git a/net/sunrpc/sunrpc_syms.c b/net/sunrpc/sunrpc_syms.c index 62a073495276..ed48ff022d35 100644 --- a/net/sunrpc/sunrpc_syms.c +++ b/net/sunrpc/sunrpc_syms.c | |||
@@ -176,8 +176,10 @@ cleanup_sunrpc(void) | |||
176 | { | 176 | { |
177 | unregister_rpc_pipefs(); | 177 | unregister_rpc_pipefs(); |
178 | rpc_destroy_mempool(); | 178 | rpc_destroy_mempool(); |
179 | cache_unregister(&auth_domain_cache); | 179 | if (cache_unregister(&auth_domain_cache)) |
180 | cache_unregister(&ip_map_cache); | 180 | printk(KERN_ERR "sunrpc: failed to unregister auth_domain cache\n"); |
181 | if (cache_unregister(&ip_map_cache)) | ||
182 | printk(KERN_ERR "sunrpc: failed to unregister ip_map cache\n"); | ||
181 | #ifdef RPC_DEBUG | 183 | #ifdef RPC_DEBUG |
182 | rpc_unregister_sysctl(); | 184 | rpc_unregister_sysctl(); |
183 | #endif | 185 | #endif |
diff --git a/net/sunrpc/svcauth.c b/net/sunrpc/svcauth.c index bde8147ef2db..dda4f0c63511 100644 --- a/net/sunrpc/svcauth.c +++ b/net/sunrpc/svcauth.c | |||
@@ -143,6 +143,7 @@ static void auth_domain_drop(struct cache_head *item, struct cache_detail *cd) | |||
143 | 143 | ||
144 | 144 | ||
145 | struct cache_detail auth_domain_cache = { | 145 | struct cache_detail auth_domain_cache = { |
146 | .owner = THIS_MODULE, | ||
146 | .hash_size = DN_HASHMAX, | 147 | .hash_size = DN_HASHMAX, |
147 | .hash_table = auth_domain_table, | 148 | .hash_table = auth_domain_table, |
148 | .name = "auth.domain", | 149 | .name = "auth.domain", |
diff --git a/net/sunrpc/svcauth_unix.c b/net/sunrpc/svcauth_unix.c index d6baf6fdf8a9..cac2e774dd81 100644 --- a/net/sunrpc/svcauth_unix.c +++ b/net/sunrpc/svcauth_unix.c | |||
@@ -242,6 +242,7 @@ static int ip_map_show(struct seq_file *m, | |||
242 | 242 | ||
243 | 243 | ||
244 | struct cache_detail ip_map_cache = { | 244 | struct cache_detail ip_map_cache = { |
245 | .owner = THIS_MODULE, | ||
245 | .hash_size = IP_HASHMAX, | 246 | .hash_size = IP_HASHMAX, |
246 | .hash_table = ip_table, | 247 | .hash_table = ip_table, |
247 | .name = "auth.unix.ip", | 248 | .name = "auth.unix.ip", |