mirror of
https://github.com/tbsdtv/linux_media.git
synced 2025-07-23 12:43:29 +02:00
io_uring: kill io_cq_unlock()
We're abusing ->completion_lock helpers. io_cq_unlock() neither locking conditionally nor doing CQE flushing, which means that callers must have some side reason of taking the lock and should do it directly. Open code io_cq_unlock() into io_cqring_overflow_kill() and clean it up. Signed-off-by: Pavel Begunkov <asml.silence@gmail.com> Link: https://lore.kernel.org/r/7dabb36856db2b562e78780480396c52c29b2bf4.1687518903.git.asml.silence@gmail.com Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
committed by
Jens Axboe
parent
91c7884ac9
commit
f432b76bcc
@@ -644,12 +644,6 @@ static inline void io_cq_lock(struct io_ring_ctx *ctx)
|
|||||||
spin_lock(&ctx->completion_lock);
|
spin_lock(&ctx->completion_lock);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void io_cq_unlock(struct io_ring_ctx *ctx)
|
|
||||||
__releases(ctx->completion_lock)
|
|
||||||
{
|
|
||||||
spin_unlock(&ctx->completion_lock);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* keep it inlined for io_submit_flush_completions() */
|
/* keep it inlined for io_submit_flush_completions() */
|
||||||
static inline void __io_cq_unlock_post(struct io_ring_ctx *ctx)
|
static inline void __io_cq_unlock_post(struct io_ring_ctx *ctx)
|
||||||
__releases(ctx->completion_lock)
|
__releases(ctx->completion_lock)
|
||||||
@@ -694,10 +688,10 @@ static void io_cqring_overflow_kill(struct io_ring_ctx *ctx)
|
|||||||
struct io_overflow_cqe *ocqe;
|
struct io_overflow_cqe *ocqe;
|
||||||
LIST_HEAD(list);
|
LIST_HEAD(list);
|
||||||
|
|
||||||
io_cq_lock(ctx);
|
spin_lock(&ctx->completion_lock);
|
||||||
list_splice_init(&ctx->cq_overflow_list, &list);
|
list_splice_init(&ctx->cq_overflow_list, &list);
|
||||||
clear_bit(IO_CHECK_CQ_OVERFLOW_BIT, &ctx->check_cq);
|
clear_bit(IO_CHECK_CQ_OVERFLOW_BIT, &ctx->check_cq);
|
||||||
io_cq_unlock(ctx);
|
spin_unlock(&ctx->completion_lock);
|
||||||
|
|
||||||
while (!list_empty(&list)) {
|
while (!list_empty(&list)) {
|
||||||
ocqe = list_first_entry(&list, struct io_overflow_cqe, list);
|
ocqe = list_first_entry(&list, struct io_overflow_cqe, list);
|
||||||
|
Reference in New Issue
Block a user