From: Trond Myklebust Date: Mon, 27 Jul 2015 14:23:19 +0000 (-0400) Subject: NFS: Fix a memory leak in nfs_do_recoalesce X-Git-Tag: v4.1.5~18 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=13e8ae1f4da1386297c2cf65522b38f8e24fa88a;p=users%2Fjedix%2Flinux-maple.git NFS: Fix a memory leak in nfs_do_recoalesce commit 03d5eb65b53889fe98a5ecddfe205c16e3093190 upstream. If the function exits early, then we must put those requests that were not processed back onto the &mirror->pg_list so they can be cleaned up by nfs_pgio_error(). Fixes: a7d42ddb30997 ("nfs: add mirroring support to pgio layer") Signed-off-by: Trond Myklebust Signed-off-by: Greg Kroah-Hartman --- diff --git a/fs/nfs/pagelist.c b/fs/nfs/pagelist.c index 282b39369510..7b4552678536 100644 --- a/fs/nfs/pagelist.c +++ b/fs/nfs/pagelist.c @@ -1110,8 +1110,11 @@ static int nfs_do_recoalesce(struct nfs_pageio_descriptor *desc) nfs_list_remove_request(req); if (__nfs_pageio_add_request(desc, req)) continue; - if (desc->pg_error < 0) + if (desc->pg_error < 0) { + list_splice_tail(&head, &mirror->pg_list); + mirror->pg_recoalesce = 1; return 0; + } break; } } while (mirror->pg_recoalesce);