forked from Minki/linux
io_uring-5.14-2021-08-20
-----BEGIN PGP SIGNATURE----- iQJEBAABCAAuFiEEwPw5LcreJtl1+l5K99NY+ylx4KYFAmEgaZ8QHGF4Ym9lQGtl cm5lbC5kawAKCRD301j7KXHgpmFCEACzSqGGsFj7kxxxX45n8r9+3cnfSN2HRnBe rcKEEypK7ZyohfIfCQ+Qxhi6NCkYYtV3Enr7ErKUAbe8XpO0Eza84h0bjEBozSUa ZxyDVOVPHF4r0P6pGmYKNNijlPImx7ORL8kAfGTDLi0f3Qc1Chmkej1K9g5SBjIz qxzvv+I6L2OIokZwjmw/zCOD9GMvFtfPbL4xG1MEdXxH+aXtitkcnGlh7ZWxfFnz Mw4/QiyBOsya2clhvqT0FckED63wy5h0es/R0WMleIYQbSeORF2YZGejd7LoaeQj 5PMvTeqv1f85lBo9BuUxp23/KDdwy0MOaKktOMFGWOkAvRH0ezjebNtUr6yBtXnt UyD/Wpdhpo0x6ZcpqB7UnwADKgd41GjPfQKqH/zNZta1vhfldg0mzuN6wfQpumg6 j+fp/7uY/lwo5fpOF4CLwVrQEENi4Yir0aA4M6s53UknmrO26H0qHRM/uiHhmRVr gG5s5ZwJgabepb9VP7fCQ7NLMpfiijTPFEUahBgB5QTtVomUhsWY/XyODoGkF0PS frKe6+0IakmkX+fzNV3vTzchew8ySesQacU6y1ugl0cPqL9si1uqzYdv6+bOgry4 NKlsRAqeYQAivQSdxdAE96+zIWnwJqQ6GKyvb/9XgPACGSWkzm7s5yXdXWKLwoBH FSPqTXs6Tw== =/PEi -----END PGP SIGNATURE----- Merge tag 'io_uring-5.14-2021-08-20' of git://git.kernel.dk/linux-block Pull io_uring fixes from Jens Axboe: "A few small fixes that should go into this release: - Fix never re-assigning an initial error value for io_uring_enter() for SQPOLL, if asked to do nothing - Fix xa_alloc_cycle() return value checking, for cases where we have wrapped around - Fix for a ctx pin issue introduced in this cycle (Pavel)" * tag 'io_uring-5.14-2021-08-20' of git://git.kernel.dk/linux-block: io_uring: fix xa_alloc_cycle() error return value check io_uring: pin ctx on fallback execution io_uring: only assign io_uring_enter() SQPOLL error in actual error case
This commit is contained in:
commit
1e6907d58c
@ -2477,8 +2477,10 @@ static void io_fallback_req_func(struct work_struct *work)
|
||||
struct llist_node *node = llist_del_all(&ctx->fallback_llist);
|
||||
struct io_kiocb *req, *tmp;
|
||||
|
||||
percpu_ref_get(&ctx->refs);
|
||||
llist_for_each_entry_safe(req, tmp, node, io_task_work.fallback_node)
|
||||
req->io_task_work.func(req);
|
||||
percpu_ref_put(&ctx->refs);
|
||||
}
|
||||
|
||||
static void __io_complete_rw(struct io_kiocb *req, long res, long res2,
|
||||
@ -9370,9 +9372,10 @@ SYSCALL_DEFINE6(io_uring_enter, unsigned int, fd, u32, to_submit,
|
||||
if (ctx->flags & IORING_SETUP_SQPOLL) {
|
||||
io_cqring_overflow_flush(ctx, false);
|
||||
|
||||
ret = -EOWNERDEAD;
|
||||
if (unlikely(ctx->sq_data->thread == NULL))
|
||||
if (unlikely(ctx->sq_data->thread == NULL)) {
|
||||
ret = -EOWNERDEAD;
|
||||
goto out;
|
||||
}
|
||||
if (flags & IORING_ENTER_SQ_WAKEUP)
|
||||
wake_up(&ctx->sq_data->wait);
|
||||
if (flags & IORING_ENTER_SQ_WAIT) {
|
||||
@ -9840,10 +9843,11 @@ static int io_register_personality(struct io_ring_ctx *ctx)
|
||||
|
||||
ret = xa_alloc_cyclic(&ctx->personalities, &id, (void *)creds,
|
||||
XA_LIMIT(0, USHRT_MAX), &ctx->pers_next, GFP_KERNEL);
|
||||
if (!ret)
|
||||
return id;
|
||||
put_cred(creds);
|
||||
return ret;
|
||||
if (ret < 0) {
|
||||
put_cred(creds);
|
||||
return ret;
|
||||
}
|
||||
return id;
|
||||
}
|
||||
|
||||
static int io_register_restrictions(struct io_ring_ctx *ctx, void __user *arg,
|
||||
|
Loading…
Reference in New Issue
Block a user