summaryrefslogtreecommitdiff
path: root/Documentation/process
diff options
context:
space:
mode:
authorPavel Begunkov <asml.silence@gmail.com>2024-12-26 16:49:23 +0000
committerJens Axboe <axboe@kernel.dk>2024-12-26 10:02:40 -0700
commite33ac68e5e21ec1292490dfe061e75c0dbdd3bd4 (patch)
treef5d69c0145c61a1f80ed794b26e69f251772fa83 /Documentation/process
parentdbd2ca9367eb19bc5e269b8c58b0b1514ada9156 (diff)
downloadlwn-e33ac68e5e21ec1292490dfe061e75c0dbdd3bd4.tar.gz
lwn-e33ac68e5e21ec1292490dfe061e75c0dbdd3bd4.zip
io_uring/sqpoll: fix sqpoll error handling races
BUG: KASAN: slab-use-after-free in __lock_acquire+0x370b/0x4a10 kernel/locking/lockdep.c:5089 Call Trace: <TASK> ... _raw_spin_lock_irqsave+0x3d/0x60 kernel/locking/spinlock.c:162 class_raw_spinlock_irqsave_constructor include/linux/spinlock.h:551 [inline] try_to_wake_up+0xb5/0x23c0 kernel/sched/core.c:4205 io_sq_thread_park+0xac/0xe0 io_uring/sqpoll.c:55 io_sq_thread_finish+0x6b/0x310 io_uring/sqpoll.c:96 io_sq_offload_create+0x162/0x11d0 io_uring/sqpoll.c:497 io_uring_create io_uring/io_uring.c:3724 [inline] io_uring_setup+0x1728/0x3230 io_uring/io_uring.c:3806 ... Kun Hu reports that the SQPOLL creating error path has UAF, which happens if io_uring_alloc_task_context() fails and then io_sq_thread() manages to run and complete before the rest of error handling code, which means io_sq_thread_finish() is looking at already killed task. Note that this is mostly theoretical, requiring fault injection on the allocation side to trigger in practice. Cc: stable@vger.kernel.org Reported-by: Kun Hu <huk23@m.fudan.edu.cn> Signed-off-by: Pavel Begunkov <asml.silence@gmail.com> Link: https://lore.kernel.org/r/0f2f1aa5729332612bd01fe0f2f385fd1f06ce7c.1735231717.git.asml.silence@gmail.com Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'Documentation/process')
0 files changed, 0 insertions, 0 deletions