Re: FAILED: patch "[PATCH] io_uring: fix provided buffer import" failed to apply to 5.18-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 7/5/22 8:36 AM, Dylan Yudaken wrote:
> On Mon, 2022-07-04 at 15:24 +0200, gregkh@xxxxxxxxxxxxxxxxxxx wrote:
>>
>> The patch below does not apply to the 5.18-stable tree.
>> If someone wants it applied there, or to any other stable or longterm
>> tree, then please email the backport, including the original git
>> commit
>> id to <stable@xxxxxxxxxxxxxxx>.
>>
>> thanks,
>>
>> greg k-h
>>
>> ------------------ original commit in Linus's tree ------------------
>>
>> From 09007af2b627f0f195c6c53c4829b285cc3990ec Mon Sep 17 00:00:00
>> 2001
>> From: Dylan Yudaken <dylany@xxxxxx>
>> Date: Thu, 30 Jun 2022 06:20:06 -0700
>> Subject: [PATCH] io_uring: fix provided buffer import
>>
>> io_import_iovec uses the s pointer, but this was changed immediately
>> after the iovec was re-imported and so it was imported into the wrong
>> place.
>>
>> Change the ordering.
>>
>> Fixes: 2be2eb02e2f5 ("io_uring: ensure reads re-import for selected
>> buffers")
>> Signed-off-by: Dylan Yudaken <dylany@xxxxxx>
>> Link:
>> https://lore.kernel.org/r/20220630132006.2825668-1-dylany@xxxxxx
>> [axboe: ensure we don't half-import as well]
>> Signed-off-by: Jens Axboe <axboe@xxxxxxxxx>
>>
>> diff --git a/fs/io_uring.c b/fs/io_uring.c
>> index aeb042ba5cc5..0d491ad15b66 100644
>> --- a/fs/io_uring.c
>> +++ b/fs/io_uring.c
>> @@ -4318,18 +4318,19 @@ static int io_read(struct io_kiocb *req,
>> unsigned int issue_flags)
>>                 if (unlikely(ret < 0))
>>                         return ret;
>>         } else {
>> +               rw = req->async_data;
>> +               s = &rw->s;
>> +
>>                 /*
>>                  * Safe and required to re-import if we're using
>> provided
>>                  * buffers, as we dropped the selected one before
>> retry.
>>                  */
>> -               if (req->flags & REQ_F_BUFFER_SELECT) {
>> +               if (io_do_buffer_select(req)) {
>>                         ret = io_import_iovec(READ, req, &iovec, s,
>> issue_flags);
>>                         if (unlikely(ret < 0))
>>                                 return ret;
>>                 }
>>  
>> -               rw = req->async_data;
>> -               s = &rw->s;
>>                 /*
>>                  * We come here from an earlier attempt, restore our
>> state to
>>                  * match in case it doesn't. It's cheap enough that
>> we don't
>>
> 
> Hi,
> 
> I have attached a fixed patch which fixes the problem on 5.18

Looks good to me, thanks Dylan!

-- 
Jens Axboe




[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux