Re: memory leak in nfs_get_client

From: Benjamin Coddington
Date: Tue Jul 02 2019 - 07:23:51 EST


On 2 Jul 2019, at 2:31, Eric Biggers wrote:

On Tue, Jun 11, 2019 at 12:23:12PM -0400, Benjamin Coddington wrote:
Ugh.. Now that you can cancel the wait, you have to also handle if "new" was
allocated. I think this needs:

diff --git a/fs/nfs/client.c b/fs/nfs/client.c
index d7e4f0848e28..4d90f5bf0b0a 100644
--- a/fs/nfs/client.c
+++ b/fs/nfs/client.c
@@ -406,10 +406,10 @@ struct nfs_client *nfs_get_client(const struct
nfs_client_initdata *cl_init)
clp = nfs_match_client(cl_init);
if (clp) {
spin_unlock(&nn->nfs_client_lock);
- if (IS_ERR(clp))
- return clp;
if (new)
new->rpc_ops->free_client(new);
+ if (IS_ERR(clp))
+ return clp;
return nfs_found_client(cl_init, clp);
}
if (new) {

I'll patch/test and send it along.

Ben

Hi Ben, what happened to this patch?

I sent it along:

https://lore.kernel.org/linux-nfs/65b675cec79d140df64bc30def88b1def32bf87e.1560272160.git.bcodding@xxxxxxxxxx/

I don't think it will go in 5.2.. it's not a huge problem.

Ben