Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=07a2bf1da4765d987ffd1d8045e92ba032e0ad78
Commit:     07a2bf1da4765d987ffd1d8045e92ba032e0ad78
Parent:     5c9cfc828ae34e19dabbdb9f2861b8c920454047
Author:     Trond Myklebust <[EMAIL PROTECTED]>
AuthorDate: Sat Jun 9 15:42:01 2007 -0400
Committer:  Trond Myklebust <[EMAIL PROTECTED]>
CommitDate: Tue Jul 10 23:40:33 2007 -0400

    SUNRPC: Fix a memory leak in gss_create()
    
    Fix a memory leak in gss_create() whereby the rpc credcache was not being
    freed if the rpc_mkpipe() call failed.
    
    Signed-off-by: Trond Myklebust <[EMAIL PROTECTED]>
---
 net/sunrpc/auth_gss/auth_gss.c |   10 ++++++----
 1 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/net/sunrpc/auth_gss/auth_gss.c b/net/sunrpc/auth_gss/auth_gss.c
index 8b4c02f..459dc9b 100644
--- a/net/sunrpc/auth_gss/auth_gss.c
+++ b/net/sunrpc/auth_gss/auth_gss.c
@@ -636,10 +636,6 @@ gss_create(struct rpc_clnt *clnt, rpc_authflavor_t flavor)
        auth->au_flavor = flavor;
        atomic_set(&auth->au_count, 1);
 
-       err = rpcauth_init_credcache(auth, GSS_CRED_EXPIRE);
-       if (err)
-               goto err_put_mech;
-
        gss_auth->dentry = rpc_mkpipe(clnt->cl_dentry, gss_auth->mech->gm_name,
                        clnt, &gss_upcall_ops, RPC_PIPE_WAIT_FOR_OPEN);
        if (IS_ERR(gss_auth->dentry)) {
@@ -647,7 +643,13 @@ gss_create(struct rpc_clnt *clnt, rpc_authflavor_t flavor)
                goto err_put_mech;
        }
 
+       err = rpcauth_init_credcache(auth, GSS_CRED_EXPIRE);
+       if (err)
+               goto err_unlink_pipe;
+
        return auth;
+err_unlink_pipe:
+       rpc_unlink(gss_auth->dentry);
 err_put_mech:
        gss_mech_put(gss_auth->mech);
 err_free:
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to