]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
NFSv4: Fix a memory leak in nfs4_discover_server_trunking
authorTrond Myklebust <Trond.Myklebust@netapp.com>
Thu, 4 Apr 2013 19:55:00 +0000 (15:55 -0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 12 Apr 2013 16:52:10 +0000 (09:52 -0700)
commit b193d59a4863ea670872d76dc99231ddeb598625 upstream.

When we assign a new rpc_client to clp->cl_rpcclient, we need to destroy
the old one.

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Cc: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
fs/nfs/nfs4state.c

index e61f68d5ef218dd64cdfec220bab02069cf1d72e..994fbe2c714cabda9292f899313b7bc9d724a769 100644 (file)
@@ -1877,7 +1877,13 @@ again:
                        status = PTR_ERR(clnt);
                        break;
                }
-               clp->cl_rpcclient = clnt;
+               /* Note: this is safe because we haven't yet marked the
+                * client as ready, so we are the only user of
+                * clp->cl_rpcclient
+                */
+               clnt = xchg(&clp->cl_rpcclient, clnt);
+               rpc_shutdown_client(clnt);
+               clnt = clp->cl_rpcclient;
                goto again;
 
        case -NFS4ERR_MINOR_VERS_MISMATCH: