io-wq: cancel request if it's asking for files and we don't have them
authorJens Axboe <axboe@kernel.dk>
Fri, 30 Oct 2020 15:36:41 +0000 (09:36 -0600)
committerJens Axboe <axboe@kernel.dk>
Wed, 4 Nov 2020 17:22:56 +0000 (10:22 -0700)
This can't currently happen, but will be possible shortly. Handle missing
files just like we do not being able to grab a needed mm, and mark the
request as needing cancelation.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
fs/io-wq.c

index 02894df..b53c055 100644 (file)
@@ -482,6 +482,10 @@ static void io_impersonate_work(struct io_worker *worker,
                current->files = work->identity->files;
                current->nsproxy = work->identity->nsproxy;
                task_unlock(current);
+               if (!work->identity->files) {
+                       /* failed grabbing files, ensure work gets cancelled */
+                       work->flags |= IO_WQ_WORK_CANCEL;
+               }
        }
        if ((work->flags & IO_WQ_WORK_FS) && current->fs != work->identity->fs)
                current->fs = work->identity->fs;