fs/io_uring.c: convert put_page() to put_user_page*()
diff mbox series

Message ID 20190805023206.8831-1-jhubbard@nvidia.com
State New
Headers show
Series
  • fs/io_uring.c: convert put_page() to put_user_page*()
Related show

Commit Message

john.hubbard@gmail.com Aug. 5, 2019, 2:32 a.m. UTC
From: John Hubbard <jhubbard@nvidia.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").

Cc: Alexander Viro <viro@zeniv.linux.org.uk>
Cc: Jens Axboe <axboe@kernel.dk>
Cc: linux-fsdevel@vger.kernel.org
Cc: linux-block@vger.kernel.org
Signed-off-by: John Hubbard <jhubbard@nvidia.com>
---
 fs/io_uring.c | 8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)

Comments

Jens Axboe Aug. 5, 2019, 3:44 a.m. UTC | #1
On 8/4/19 7:32 PM, john.hubbard@gmail.com wrote:
> From: John Hubbard <jhubbard@nvidia.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").

Applied for 5.4, thanks.
Ira Weiny Aug. 5, 2019, 10:04 p.m. UTC | #2
On Sun, Aug 04, 2019 at 07:32:06PM -0700, john.hubbard@gmail.com wrote:
> From: John Hubbard <jhubbard@nvidia.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").
> 
> Cc: Alexander Viro <viro@zeniv.linux.org.uk>
> Cc: Jens Axboe <axboe@kernel.dk>
> Cc: linux-fsdevel@vger.kernel.org
> Cc: linux-block@vger.kernel.org
> Signed-off-by: John Hubbard <jhubbard@nvidia.com>

Signed-off-by: Ira Weiny <ira.weiny@intel.com>

> ---
>  fs/io_uring.c | 8 +++-----
>  1 file changed, 3 insertions(+), 5 deletions(-)
> 
> diff --git a/fs/io_uring.c b/fs/io_uring.c
> index d542f1cf4428..8a1de5ab9c6d 100644
> --- a/fs/io_uring.c
> +++ b/fs/io_uring.c
> @@ -2815,7 +2815,7 @@ static int io_sqe_buffer_unregister(struct io_ring_ctx *ctx)
>  		struct io_mapped_ubuf *imu = &ctx->user_bufs[i];
>  
>  		for (j = 0; j < imu->nr_bvecs; j++)
> -			put_page(imu->bvec[j].bv_page);
> +			put_user_page(imu->bvec[j].bv_page);
>  
>  		if (ctx->account_mem)
>  			io_unaccount_mem(ctx->user, imu->nr_bvecs);
> @@ -2959,10 +2959,8 @@ static int io_sqe_buffer_register(struct io_ring_ctx *ctx, void __user *arg,
>  			 * if we did partial map, or found file backed vmas,
>  			 * release any pages we did get
>  			 */
> -			if (pret > 0) {
> -				for (j = 0; j < pret; j++)
> -					put_page(pages[j]);
> -			}
> +			if (pret > 0)
> +				put_user_pages(pages, pret);
>  			if (ctx->account_mem)
>  				io_unaccount_mem(ctx->user, nr_pages);
>  			kvfree(imu->bvec);
> -- 
> 2.22.0
>
Ira Weiny Aug. 5, 2019, 10:05 p.m. UTC | #3
On Mon, Aug 05, 2019 at 03:04:42PM -0700, 'Ira Weiny' wrote:
> On Sun, Aug 04, 2019 at 07:32:06PM -0700, john.hubbard@gmail.com wrote:
> > From: John Hubbard <jhubbard@nvidia.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").
> > 
> > Cc: Alexander Viro <viro@zeniv.linux.org.uk>
> > Cc: Jens Axboe <axboe@kernel.dk>
> > Cc: linux-fsdevel@vger.kernel.org
> > Cc: linux-block@vger.kernel.org
> > Signed-off-by: John Hubbard <jhubbard@nvidia.com>
> 
> Signed-off-by: Ira Weiny <ira.weiny@intel.com>

<sigh>

I meant to say I wrote the same patch ...  For this one...

Reviewed-by: Ira Weiny <ira.weiny@intel.com>

> 
> > ---
> >  fs/io_uring.c | 8 +++-----
> >  1 file changed, 3 insertions(+), 5 deletions(-)
> > 
> > diff --git a/fs/io_uring.c b/fs/io_uring.c
> > index d542f1cf4428..8a1de5ab9c6d 100644
> > --- a/fs/io_uring.c
> > +++ b/fs/io_uring.c
> > @@ -2815,7 +2815,7 @@ static int io_sqe_buffer_unregister(struct io_ring_ctx *ctx)
> >  		struct io_mapped_ubuf *imu = &ctx->user_bufs[i];
> >  
> >  		for (j = 0; j < imu->nr_bvecs; j++)
> > -			put_page(imu->bvec[j].bv_page);
> > +			put_user_page(imu->bvec[j].bv_page);
> >  
> >  		if (ctx->account_mem)
> >  			io_unaccount_mem(ctx->user, imu->nr_bvecs);
> > @@ -2959,10 +2959,8 @@ static int io_sqe_buffer_register(struct io_ring_ctx *ctx, void __user *arg,
> >  			 * if we did partial map, or found file backed vmas,
> >  			 * release any pages we did get
> >  			 */
> > -			if (pret > 0) {
> > -				for (j = 0; j < pret; j++)
> > -					put_page(pages[j]);
> > -			}
> > +			if (pret > 0)
> > +				put_user_pages(pages, pret);
> >  			if (ctx->account_mem)
> >  				io_unaccount_mem(ctx->user, nr_pages);
> >  			kvfree(imu->bvec);
> > -- 
> > 2.22.0
> >
John Hubbard Aug. 5, 2019, 10:12 p.m. UTC | #4
On 8/5/19 3:05 PM, Ira Weiny wrote:
> On Mon, Aug 05, 2019 at 03:04:42PM -0700, 'Ira Weiny' wrote:
>> On Sun, Aug 04, 2019 at 07:32:06PM -0700, john.hubbard@gmail.com wrote:
>>> From: John Hubbard <jhubbard@nvidia.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").
>>>
>>> Cc: Alexander Viro <viro@zeniv.linux.org.uk>
>>> Cc: Jens Axboe <axboe@kernel.dk>
>>> Cc: linux-fsdevel@vger.kernel.org
>>> Cc: linux-block@vger.kernel.org
>>> Signed-off-by: John Hubbard <jhubbard@nvidia.com>
>>
>> Signed-off-by: Ira Weiny <ira.weiny@intel.com>
> 
> <sigh>
> 
> I meant to say I wrote the same patch ...  For this one...
> 
> Reviewed-by: Ira Weiny <ira.weiny@intel.com>
> 

Hi Ira,

Say, in case you or anyone else is up for it: there are still about 
two thirds of the 34 patches that could use a reviewed-by, in this series:

   https://lore.kernel.org/r/20190804224915.28669-1-jhubbard@nvidia.com

...and even reviewing one or two quick ones would help--no need to look at
all of them, especially if several people each look at a few.

Also note that I'm keeping the gup_dma_core branch tracking the latest
linux.git, and it seems to be working pretty well, aside from one warning
that I haven't yet figured out (as per the latest commit):

    git@github.com:johnhubbard/linux.git
   

thanks,

Patch
diff mbox series

diff --git a/fs/io_uring.c b/fs/io_uring.c
index d542f1cf4428..8a1de5ab9c6d 100644
--- a/fs/io_uring.c
+++ b/fs/io_uring.c
@@ -2815,7 +2815,7 @@  static int io_sqe_buffer_unregister(struct io_ring_ctx *ctx)
 		struct io_mapped_ubuf *imu = &ctx->user_bufs[i];
 
 		for (j = 0; j < imu->nr_bvecs; j++)
-			put_page(imu->bvec[j].bv_page);
+			put_user_page(imu->bvec[j].bv_page);
 
 		if (ctx->account_mem)
 			io_unaccount_mem(ctx->user, imu->nr_bvecs);
@@ -2959,10 +2959,8 @@  static int io_sqe_buffer_register(struct io_ring_ctx *ctx, void __user *arg,
 			 * if we did partial map, or found file backed vmas,
 			 * release any pages we did get
 			 */
-			if (pret > 0) {
-				for (j = 0; j < pret; j++)
-					put_page(pages[j]);
-			}
+			if (pret > 0)
+				put_user_pages(pages, pret);
 			if (ctx->account_mem)
 				io_unaccount_mem(ctx->user, nr_pages);
 			kvfree(imu->bvec);