mirror of
https://github.com/torvalds/linux.git
synced 2026-05-25 15:41:52 +02:00
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