Thadeu Lima de Souza Cascardo 7e916d0124 io_uring: truncate lengths larger than MAX_RW_COUNT on provide buffers
commit d1f82808877bb10d3deee7cf3374a4eb3fb582db upstream.

Read and write operations are capped to MAX_RW_COUNT. Some read ops rely on
that limit, and that is not guaranteed by the IORING_OP_PROVIDE_BUFFERS.

Truncate those lengths when doing io_add_buffers, so buffer addresses still
use the uncapped length.

Also, take the chance and change struct io_buffer len member to __u32, so
it matches struct io_provide_buffer len member.

This fixes CVE-2021-3491, also reported as ZDI-CAN-13546.

Fixes: ddf0322db79c ("io_uring: add IORING_OP_PROVIDE_BUFFERS")
Reported-by: Billy Jheng Bing-Jhong (@st424204)
Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@canonical.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-05-14 09:49:55 +02:00
..
2020-10-16 11:11:22 -07:00
2021-05-11 14:47:36 +02:00
2020-09-10 14:03:31 -07:00
2020-08-04 21:02:38 -04:00
2020-09-22 23:45:57 -04:00
2020-10-23 11:33:41 -07:00
2021-01-27 11:55:29 +01:00
2020-10-23 11:33:41 -07:00
2020-10-24 12:40:18 -07:00
2020-08-27 16:06:47 -04:00