If the query chain forms a cycle, the interface will loop indefinitely. Make sure it handles fatal signals, so the user can kill the process and hence break out of the infinite loop. Fixes: c265ae75f900 ("io_uring: introduce io_uring querying") Reported-by: Jens Axboe Signed-off-by: Pavel Begunkov --- io_uring/query.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/io_uring/query.c b/io_uring/query.c index 9eed0f371956..c2183daf5a46 100644 --- a/io_uring/query.c +++ b/io_uring/query.c @@ -88,6 +88,10 @@ int io_query(struct io_ring_ctx *ctx, void __user *arg, unsigned nr_args) if (ret) return ret; uhdr = u64_to_user_ptr(next_hdr); + + if (fatal_signal_pending(current)) + return -EINTR; + cond_resched(); } return 0; } -- 2.49.0