]> www.infradead.org Git - users/dwmw2/linux.git/commit
io_uring: fix dead-hung for non-iter fixed rw
authorPavel Begunkov <asml.silence@gmail.com>
Sun, 24 Nov 2019 08:58:24 +0000 (11:58 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 13 Dec 2019 07:42:27 +0000 (08:42 +0100)
commitf246eedbafdbf348c98d49a7891a3fe72118ffc3
tree9500243ecbf3ba57de074aa04e18ec4cfbb3b335
parent3b2b7b8954218700cdc7e28a172d3dc9fd5e7878
io_uring: fix dead-hung for non-iter fixed rw

commit 311ae9e159d81a1ec1cf645daf40b39ae5a0bd84 upstream.

Read/write requests to devices without implemented read/write_iter
using fixed buffers can cause general protection fault, which totally
hangs a machine.

io_import_fixed() initialises iov_iter with bvec, but loop_rw_iter()
accesses it as iovec, dereferencing random address.

kmap() page by page in this case

Cc: stable@vger.kernel.org
Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
fs/io_uring.c