aboutsummaryrefslogtreecommitdiffstats
path: root/net/sunrpc/auth_gss
diff options
context:
space:
mode:
authorTrond Myklebust <Trond.Myklebust@netapp.com>2007-06-09 15:41:42 -0400
committerTrond Myklebust <Trond.Myklebust@netapp.com>2007-07-10 23:40:33 -0400
commit3ab9bb7243489f9db3abf3d05521ddfc6b184c0a (patch)
tree05476c58c87c5578354ab8a3befcb7316c9ef9bc /net/sunrpc/auth_gss
parent03a1256f06cf1f58e33971fb4a524479e75c200e (diff)
SUNRPC: Fix a memory leak in the auth credcache code
The leak only affects the RPCSEC_GSS caches, since they are the only ones that are dynamically allocated... Rename the existing rpcauth_free_credcache() to rpcauth_clear_credcache() in order to better describe its role, then add a new function rpcauth_destroy_credcache() that actually frees the cache in addition to clearing it out. Also move the call to destroy the credcache in gss_destroy() to come before the rpc upcall pipe is unlinked. Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'net/sunrpc/auth_gss')
-rw-r--r--net/sunrpc/auth_gss/auth_gss.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/net/sunrpc/auth_gss/auth_gss.c b/net/sunrpc/auth_gss/auth_gss.c
index 50809086fa1b..8b4c02f8befb 100644
--- a/net/sunrpc/auth_gss/auth_gss.c
+++ b/net/sunrpc/auth_gss/auth_gss.c
@@ -665,12 +665,13 @@ gss_destroy(struct rpc_auth *auth)
665 dprintk("RPC: destroying GSS authenticator %p flavor %d\n", 665 dprintk("RPC: destroying GSS authenticator %p flavor %d\n",
666 auth, auth->au_flavor); 666 auth, auth->au_flavor);
667 667
668 rpcauth_destroy_credcache(auth);
669
668 gss_auth = container_of(auth, struct gss_auth, rpc_auth); 670 gss_auth = container_of(auth, struct gss_auth, rpc_auth);
669 rpc_unlink(gss_auth->dentry); 671 rpc_unlink(gss_auth->dentry);
670 gss_auth->dentry = NULL; 672 gss_auth->dentry = NULL;
671 gss_mech_put(gss_auth->mech); 673 gss_mech_put(gss_auth->mech);
672 674
673 rpcauth_free_credcache(auth);
674 kfree(gss_auth); 675 kfree(gss_auth);
675 module_put(THIS_MODULE); 676 module_put(THIS_MODULE);
676} 677}