Skip to content

Commit 8078afe

Browse files
author
Ming Lei
committed
io_uring/memmap: cast nr_pages to size_t before shifting
JIRA: https://issues.redhat.com/browse/RHEL-106845 commit 33503c0 Author: Jens Axboe <axboe@kernel.dk> Date: Fri Aug 8 06:35:14 2025 -0600 io_uring/memmap: cast nr_pages to size_t before shifting If the allocated size exceeds UINT_MAX, then it's necessary to cast the mr->nr_pages value to size_t to prevent it from overflowing. In practice this isn't much of a concern as the required memory size will have been validated upfront, and accounted to the user. And > 4GB sizes will be necessary to make the lack of a cast a problem, which greatly exceeds normal user locked_vm settings that are generally in the kb to mb range. However, if root is used, then accounting isn't done, and then it's possible to hit this issue. Link: https://lore.kernel.org/all/6895b298.050a0220.7f033.0059.GAE@google.com/ Cc: stable@vger.kernel.org Reported-by: syzbot+23727438116feb13df15@syzkaller.appspotmail.com Fixes: 087f997 ("io_uring/memmap: implement mmap for regions") Signed-off-by: Jens Axboe <axboe@kernel.dk> Signed-off-by: Ming Lei <ming.lei@redhat.com>
1 parent 5af6d82 commit 8078afe

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

io_uring/memmap.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ static int io_region_allocate_pages(struct io_ring_ctx *ctx,
155155
unsigned long mmap_offset)
156156
{
157157
gfp_t gfp = GFP_KERNEL_ACCOUNT | __GFP_ZERO | __GFP_NOWARN;
158-
unsigned long size = mr->nr_pages << PAGE_SHIFT;
158+
size_t size = (size_t) mr->nr_pages << PAGE_SHIFT;
159159
unsigned long nr_allocated;
160160
struct page **pages;
161161
void *p;

0 commit comments

Comments
 (0)