Skip to content

Commit 978e5c1

Browse files
Alexey Izbyshevaxboe
authored andcommitted
io_uring: Fix io_cqring_wait() not restoring sigmask on get_timespec64() failure
This bug was introduced in commit 950e79d ("io_uring: minor io_cqring_wait() optimization"), which was made in preparation for adc8682 ("io_uring: Add support for napi_busy_poll"). The latter got reverted in cb31821 ("Revert "io_uring: Add support for napi_busy_poll""), so simply undo the former as well. Cc: [email protected] Fixes: 950e79d ("io_uring: minor io_cqring_wait() optimization") Signed-off-by: Alexey Izbyshev <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Jens Axboe <[email protected]>
1 parent 561e4f9 commit 978e5c1

File tree

1 file changed

+13
-13
lines changed

1 file changed

+13
-13
lines changed

io_uring/io_uring.c

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2602,19 +2602,6 @@ static int io_cqring_wait(struct io_ring_ctx *ctx, int min_events,
26022602
if (__io_cqring_events_user(ctx) >= min_events)
26032603
return 0;
26042604

2605-
if (sig) {
2606-
#ifdef CONFIG_COMPAT
2607-
if (in_compat_syscall())
2608-
ret = set_compat_user_sigmask((const compat_sigset_t __user *)sig,
2609-
sigsz);
2610-
else
2611-
#endif
2612-
ret = set_user_sigmask(sig, sigsz);
2613-
2614-
if (ret)
2615-
return ret;
2616-
}
2617-
26182605
init_waitqueue_func_entry(&iowq.wq, io_wake_function);
26192606
iowq.wq.private = current;
26202607
INIT_LIST_HEAD(&iowq.wq.entry);
@@ -2633,6 +2620,19 @@ static int io_cqring_wait(struct io_ring_ctx *ctx, int min_events,
26332620
io_napi_adjust_timeout(ctx, &iowq, &ts);
26342621
}
26352622

2623+
if (sig) {
2624+
#ifdef CONFIG_COMPAT
2625+
if (in_compat_syscall())
2626+
ret = set_compat_user_sigmask((const compat_sigset_t __user *)sig,
2627+
sigsz);
2628+
else
2629+
#endif
2630+
ret = set_user_sigmask(sig, sigsz);
2631+
2632+
if (ret)
2633+
return ret;
2634+
}
2635+
26362636
io_napi_busy_loop(ctx, &iowq);
26372637

26382638
trace_io_uring_cqring_wait(ctx, min_events);

0 commit comments

Comments
 (0)