summaryrefslogtreecommitdiffstats
path: root/init
diff options
context:
space:
mode:
authorJens Axboe <axboe@kernel.dk>2020-09-13 13:09:39 -0600
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2020-11-01 12:47:01 +0100
commitadb6bf5ea1ac14bc78bdd5fc0cbe232d97870169 (patch)
tree23257451326ba190366bffc4f9e2dfb3e94ce54b /init
parenteeb3eb7c3c4fc83def66837340143dec2953ee87 (diff)
downloadlinux-stable-adb6bf5ea1ac14bc78bdd5fc0cbe232d97870169.tar.gz
linux-stable-adb6bf5ea1ac14bc78bdd5fc0cbe232d97870169.tar.bz2
linux-stable-adb6bf5ea1ac14bc78bdd5fc0cbe232d97870169.zip
io_uring: don't rely on weak ->files references
commit 0f2122045b946241a9e549c2a76cea54fa58a7ff upstream. Grab actual references to the files_struct. To avoid circular references issues due to this, we add a per-task note that keeps track of what io_uring contexts a task has used. When the tasks execs or exits its assigned files, we cancel requests based on this tracking. With that, we can grab proper references to the files table, and no longer need to rely on stashing away ring_fd and ring_file to check if the ring_fd may have been closed. Cc: stable@vger.kernel.org # v5.5+ Reviewed-by: Pavel Begunkov <asml.silence@gmail.com> Signed-off-by: Jens Axboe <axboe@kernel.dk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'init')
-rw-r--r--init/init_task.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/init/init_task.c b/init/init_task.c
index f6889fce64af..a56f0abb63e9 100644
--- a/init/init_task.c
+++ b/init/init_task.c
@@ -114,6 +114,9 @@ struct task_struct init_task
.thread = INIT_THREAD,
.fs = &init_fs,
.files = &init_files,
+#ifdef CONFIG_IO_URING
+ .io_uring = NULL,
+#endif
.signal = &init_signals,
.sighand = &init_sighand,
.nsproxy = &init_nsproxy,