diff options
Diffstat (limited to 'fs/io_uring.c')
-rw-r--r-- | fs/io_uring.c | 11 |
1 files changed, 3 insertions, 8 deletions
diff --git a/fs/io_uring.c b/fs/io_uring.c index d682049c07b2..e2a66e12fbc6 100644 --- a/fs/io_uring.c +++ b/fs/io_uring.c | |||
@@ -2400,7 +2400,6 @@ static int io_cqring_wait(struct io_ring_ctx *ctx, int min_events, | |||
2400 | const sigset_t __user *sig, size_t sigsz) | 2400 | const sigset_t __user *sig, size_t sigsz) |
2401 | { | 2401 | { |
2402 | struct io_cq_ring *ring = ctx->cq_ring; | 2402 | struct io_cq_ring *ring = ctx->cq_ring; |
2403 | sigset_t ksigmask, sigsaved; | ||
2404 | int ret; | 2403 | int ret; |
2405 | 2404 | ||
2406 | if (io_cqring_events(ring) >= min_events) | 2405 | if (io_cqring_events(ring) >= min_events) |
@@ -2410,21 +2409,17 @@ static int io_cqring_wait(struct io_ring_ctx *ctx, int min_events, | |||
2410 | #ifdef CONFIG_COMPAT | 2409 | #ifdef CONFIG_COMPAT |
2411 | if (in_compat_syscall()) | 2410 | if (in_compat_syscall()) |
2412 | ret = set_compat_user_sigmask((const compat_sigset_t __user *)sig, | 2411 | ret = set_compat_user_sigmask((const compat_sigset_t __user *)sig, |
2413 | &ksigmask, &sigsaved, sigsz); | 2412 | sigsz); |
2414 | else | 2413 | else |
2415 | #endif | 2414 | #endif |
2416 | ret = set_user_sigmask(sig, &ksigmask, | 2415 | ret = set_user_sigmask(sig, sigsz); |
2417 | &sigsaved, sigsz); | ||
2418 | 2416 | ||
2419 | if (ret) | 2417 | if (ret) |
2420 | return ret; | 2418 | return ret; |
2421 | } | 2419 | } |
2422 | 2420 | ||
2423 | ret = wait_event_interruptible(ctx->wait, io_cqring_events(ring) >= min_events); | 2421 | ret = wait_event_interruptible(ctx->wait, io_cqring_events(ring) >= min_events); |
2424 | 2422 | restore_saved_sigmask_unless(ret == -ERESTARTSYS); | |
2425 | if (sig) | ||
2426 | restore_user_sigmask(sig, &sigsaved, ret == -ERESTARTSYS); | ||
2427 | |||
2428 | if (ret == -ERESTARTSYS) | 2423 | if (ret == -ERESTARTSYS) |
2429 | ret = -EINTR; | 2424 | ret = -EINTR; |
2430 | 2425 | ||