From: Trond Myklebust Date: Thu, 21 Jan 2021 21:34:37 +0000 (-0500) Subject: pNFS/NFSv4: Fix a layout segment leak in pnfs_layout_process() X-Git-Tag: v5.11-rc6~8^2~5 X-Git-Url: https://git.kernel.dk/?a=commitdiff_plain;h=814b84971388cd5fb182f2e914265b3827758455;p=linux-block.git pNFS/NFSv4: Fix a layout segment leak in pnfs_layout_process() If the server returns a new stateid that does not match the one in our cache, then pnfs_layout_process() will leak the layout segments returned by pnfs_mark_layout_stateid_invalid(). Fixes: 9888d837f3cf ("pNFS: Force a retry of LAYOUTGET if the stateid doesn't match our cache") Signed-off-by: Trond Myklebust --- diff --git a/fs/nfs/pnfs.c b/fs/nfs/pnfs.c index 4f274f21c4ab..e68e6f8cb407 100644 --- a/fs/nfs/pnfs.c +++ b/fs/nfs/pnfs.c @@ -2417,6 +2417,7 @@ out_forget: spin_unlock(&ino->i_lock); lseg->pls_layout = lo; NFS_SERVER(ino)->pnfs_curr_ld->free_lseg(lseg); + pnfs_free_lseg_list(&free_me); return ERR_PTR(-EAGAIN); }