| From 0bc185f1278eb11d96867bb63bead0538f923267 Mon Sep 17 00:00:00 2001 |
| From: Trond Myklebust <trond.myklebust@hammerspace.com> |
| Date: Wed, 1 Apr 2020 10:07:16 -0400 |
| Subject: [PATCH] NFS: Fix a page leak in nfs_destroy_unlinked_subrequests() |
| |
| commit add42de31721fa29ed77a7ce388674d69f9d31a4 upstream. |
| |
| When we detach a subrequest from the list, we must also release the |
| reference it holds to the parent. |
| |
| Fixes: 5b2b5187fa85 ("NFS: Fix nfs_page_group_destroy() and nfs_lock_and_join_requests() race cases") |
| Cc: stable@vger.kernel.org # v4.14+ |
| Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/fs/nfs/write.c b/fs/nfs/write.c |
| index 4d48cd2bf4a3..0e6afe72f6ce 100644 |
| --- a/fs/nfs/write.c |
| +++ b/fs/nfs/write.c |
| @@ -444,6 +444,7 @@ nfs_destroy_unlinked_subrequests(struct nfs_page *destroy_list, |
| } |
| |
| subreq->wb_head = subreq; |
| + nfs_release_request(old_head); |
| |
| if (test_and_clear_bit(PG_INODE_REF, &subreq->wb_flags)) { |
| nfs_release_request(subreq); |
| -- |
| 2.7.4 |
| |