]> git.itanic.dy.fi Git - linux-stable/commit
io_uring/kbuf: defer release of mapped buffer rings
authorJens Axboe <axboe@kernel.dk>
Mon, 27 Nov 2023 23:47:04 +0000 (16:47 -0700)
committerJens Axboe <axboe@kernel.dk>
Tue, 28 Nov 2023 14:56:16 +0000 (07:56 -0700)
commitc392cbecd8eca4c53f2bf508731257d9d0a21c2d
tree74054d568c3324dc69b65b037d9076466c2352af
parentedecf1689768452ba1a64b7aaf3a47a817da651a
io_uring/kbuf: defer release of mapped buffer rings

If a provided buffer ring is setup with IOU_PBUF_RING_MMAP, then the
kernel allocates the memory for it and the application is expected to
mmap(2) this memory. However, io_uring uses remap_pfn_range() for this
operation, so we cannot rely on normal munmap/release on freeing them
for us.

Stash an io_buf_free entry away for each of these, if any, and provide
a helper to free them post ->release().

Cc: stable@vger.kernel.org
Fixes: c56e022c0a27 ("io_uring: add support for user mapped provided buffer ring")
Reported-by: Jann Horn <jannh@google.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
include/linux/io_uring_types.h
io_uring/io_uring.c
io_uring/kbuf.c
io_uring/kbuf.h