mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-29 13:53:33 +00:00
io_uring/kbuf: check for buffer list readiness after NULL check
Move the buffer list 'is_ready' check below the validity check for
the buffer list for a given group.
Fixes: 5cf4f52e6d
("io_uring: free io_buffer_list entries via RCU")
Reported-by: Dan Carpenter <dan.carpenter@linaro.org>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
parent
e53f7b54b1
commit
9865346b7e
1 changed files with 2 additions and 2 deletions
|
@ -756,6 +756,8 @@ void *io_pbuf_get_address(struct io_ring_ctx *ctx, unsigned long bgid)
|
||||||
|
|
||||||
bl = __io_buffer_get_list(ctx, smp_load_acquire(&ctx->io_bl), bgid);
|
bl = __io_buffer_get_list(ctx, smp_load_acquire(&ctx->io_bl), bgid);
|
||||||
|
|
||||||
|
if (!bl || !bl->is_mmap)
|
||||||
|
return NULL;
|
||||||
/*
|
/*
|
||||||
* Ensure the list is fully setup. Only strictly needed for RCU lookup
|
* Ensure the list is fully setup. Only strictly needed for RCU lookup
|
||||||
* via mmap, and in that case only for the array indexed groups. For
|
* via mmap, and in that case only for the array indexed groups. For
|
||||||
|
@ -763,8 +765,6 @@ void *io_pbuf_get_address(struct io_ring_ctx *ctx, unsigned long bgid)
|
||||||
*/
|
*/
|
||||||
if (!smp_load_acquire(&bl->is_ready))
|
if (!smp_load_acquire(&bl->is_ready))
|
||||||
return NULL;
|
return NULL;
|
||||||
if (!bl || !bl->is_mmap)
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
return bl->buf_ring;
|
return bl->buf_ring;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue