io_uring: fix return value when removing provided buffers
[ Upstream commitc0921e51da
] When a request to remove buffers is submitted, and the given number to be removed is larger than available in the specified buffer group, the resulting CQE result will be the number of removed buffers + 1, which is 1 more than it should be. Previously, the head was part of the list and it got removed after the loop, so the increment was needed. Now, the head is not an element of the list, so the increment shouldn't be there anymore. Fixes:dbc7d452e7
("io_uring: manage provided buffers strictly ordered") Signed-off-by: Wojciech Lukowicz <wlukowicz01@gmail.com> Link: https://lore.kernel.org/r/20230401195039.404909-2-wlukowicz01@gmail.com Signed-off-by: Jens Axboe <axboe@kernel.dk> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
9f03d09b09
commit
bd4081fa1c
|
@ -228,7 +228,6 @@ static int __io_remove_buffers(struct io_ring_ctx *ctx,
|
|||
return i;
|
||||
}
|
||||
|
||||
/* the head kbuf is the list itself */
|
||||
while (!list_empty(&bl->buf_list)) {
|
||||
struct io_buffer *nxt;
|
||||
|
||||
|
@ -238,7 +237,6 @@ static int __io_remove_buffers(struct io_ring_ctx *ctx,
|
|||
return i;
|
||||
cond_resched();
|
||||
}
|
||||
i++;
|
||||
|
||||
return i;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue