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? thanks, greg k-h