Re: FAILED: patch "[PATCH] io_uring: only flush workqueues on fileset removal" failed to apply to 5.3-stable tree

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

 



On 10/16/19 10:13 AM, Greg KH wrote:
> On Wed, Oct 16, 2019 at 09:04:43AM -0700, gregkh@xxxxxxxxxxxxxxxxxxx wrote:
>>
>> The patch below does not apply to the 5.3-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 8a99734081775c012a4a6c442fdef0379fe52bdf Mon Sep 17 00:00:00 2001
>> From: Jens Axboe <axboe@xxxxxxxxx>
>> Date: Wed, 9 Oct 2019 14:40:13 -0600
>> Subject: [PATCH] io_uring: only flush workqueues on fileset removal
>>
>> We should not remove the workqueue, we just need to ensure that the
>> workqueues are synced. The workqueues are torn down on ctx removal.
>>
>> Cc: stable@xxxxxxxxxxxxxxx
>> Fixes: 6b06314c47e1 ("io_uring: add file set registration")
>> Reported-by: Stefan Hajnoczi <stefanha@xxxxxxxxxx>
>> Signed-off-by: Jens Axboe <axboe@xxxxxxxxx>
>>
>> diff --git a/fs/io_uring.c b/fs/io_uring.c
>> index ceb3497bdd2a..2c44648217bd 100644
>> --- a/fs/io_uring.c
>> +++ b/fs/io_uring.c
>> @@ -2866,8 +2866,12 @@ static void io_finish_async(struct io_ring_ctx *ctx)
>>   static void io_destruct_skb(struct sk_buff *skb)
>>   {
>>   	struct io_ring_ctx *ctx = skb->sk->sk_user_data;
>> +	int i;
>> +
>> +	for (i = 0; i < ARRAY_SIZE(ctx->sqo_wq); i++)
>> +		if (ctx->sqo_wq[i])
>> +			flush_workqueue(ctx->sqo_wq[i]);
>>   
>> -	io_finish_async(ctx);
>>   	unix_destruct_scm(skb);
>>   }
>>   
>>
> 
> This fails to build as sqo_wq is a pointer in 5.3, not an arrary.
> Backporting that array change feels "big" for 5.3, is that needed here,
> or can this be fixed differently?

Yeah, we don't need to do that. It's just a pointer in 5.3, not an
array of pointers, so the below should be all we need for 5.3 (and
5.2/5.1).


diff --git a/fs/io_uring.c b/fs/io_uring.c
index cfb48bd088e1..e05f302cfb41 100644
--- a/fs/io_uring.c
+++ b/fs/io_uring.c
@@ -2564,7 +2564,8 @@ static void io_destruct_skb(struct sk_buff *skb)
 {
 	struct io_ring_ctx *ctx = skb->sk->sk_user_data;
 
-	io_finish_async(ctx);
+	if (ctx->sqo_wq)
+		flush_workqueue(ctx->sqo_wq);
 	unix_destruct_scm(skb);
 }
 

-- 
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