forked from Minki/linux
io_uring: adjust smp_rmb inside io_cqring_events
Whenever smp_rmb is required to use io_cqring_events, keep smp_rmb inside the function io_cqring_events. Signed-off-by: Jackie Liu <liuyun01@kylinos.cn> Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
parent
2bbcd6d3b3
commit
dc6ce4bc2b
@ -2167,6 +2167,8 @@ static int io_ring_submit(struct io_ring_ctx *ctx, unsigned int to_submit)
|
||||
|
||||
static unsigned io_cqring_events(struct io_cq_ring *ring)
|
||||
{
|
||||
/* See comment at the top of this file */
|
||||
smp_rmb();
|
||||
return READ_ONCE(ring->r.tail) - READ_ONCE(ring->r.head);
|
||||
}
|
||||
|
||||
@ -2182,8 +2184,6 @@ static int io_cqring_wait(struct io_ring_ctx *ctx, int min_events,
|
||||
DEFINE_WAIT(wait);
|
||||
int ret;
|
||||
|
||||
/* See comment at the top of this file */
|
||||
smp_rmb();
|
||||
if (io_cqring_events(ring) >= min_events)
|
||||
return 0;
|
||||
|
||||
@ -2205,8 +2205,6 @@ static int io_cqring_wait(struct io_ring_ctx *ctx, int min_events,
|
||||
prepare_to_wait(&ctx->wait, &wait, TASK_INTERRUPTIBLE);
|
||||
|
||||
ret = 0;
|
||||
/* See comment at the top of this file */
|
||||
smp_rmb();
|
||||
if (io_cqring_events(ring) >= min_events)
|
||||
break;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user