From: Jérôme Glisse <jgli...@redhat.com>

For pages that were retained via get_user_pages*(), release those pages
via the new put_user_page*() routines, instead of via put_page() or
release_pages().

This is part a tree-wide conversion, as described in commit fc1d8e7cca2d
("mm: introduce put_user_page*(), placeholder versions").

Signed-off-by: Jérôme Glisse <jgli...@redhat.com>
Signed-off-by: John Hubbard <jhubb...@nvidia.com>
Cc: linux-fsde...@vger.kernel.org
Cc: linux-block@vger.kernel.org
Cc: linux...@kvack.org
Cc: linux-...@vger.kernel.org
Cc: Jan Kara <j...@suse.cz>
Cc: Dan Williams <dan.j.willi...@intel.com>
Cc: Alexander Viro <v...@zeniv.linux.org.uk>
Cc: Johannes Thumshirn <jthumsh...@suse.de>
Cc: Christoph Hellwig <h...@lst.de>
Cc: Jens Axboe <ax...@kernel.dk>
Cc: Ming Lei <ming....@redhat.com>
Cc: Dave Chinner <da...@fromorbit.com>
Cc: Jason Gunthorpe <j...@ziepe.ca>
Cc: Matthew Wilcox <wi...@infradead.org>
Cc: Boaz Harrosh <b...@plexistor.com>
Cc: Trond Myklebust <trond.mykleb...@hammerspace.com>
Cc: Anna Schumaker <anna.schuma...@netapp.com>
---
 fs/nfs/direct.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/fs/nfs/direct.c b/fs/nfs/direct.c
index 0cb442406168..35f30fe2900f 100644
--- a/fs/nfs/direct.c
+++ b/fs/nfs/direct.c
@@ -512,7 +512,10 @@ static ssize_t nfs_direct_read_schedule_iovec(struct 
nfs_direct_req *dreq,
                        pos += req_len;
                        dreq->bytes_left -= req_len;
                }
-               nfs_direct_release_pages(pagevec, npages);
+               if (iov_iter_get_pages_use_gup(iter))
+                       put_user_pages(pagevec, npages);
+               else
+                       nfs_direct_release_pages(pagevec, npages);
                kvfree(pagevec);
                if (result < 0)
                        break;
@@ -935,7 +938,10 @@ static ssize_t nfs_direct_write_schedule_iovec(struct 
nfs_direct_req *dreq,
                        pos += req_len;
                        dreq->bytes_left -= req_len;
                }
-               nfs_direct_release_pages(pagevec, npages);
+               if (iov_iter_get_pages_use_gup(iter))
+                       put_user_pages(pagevec, npages);
+               else
+                       nfs_direct_release_pages(pagevec, npages);
                kvfree(pagevec);
                if (result < 0)
                        break;
-- 
2.22.0

Reply via email to