io_uring/memmap: cast nr_pages to size_t before shifting io_uring-6.17-20250808
authorJens Axboe <axboe@kernel.dk>
Fri, 8 Aug 2025 12:35:14 +0000 (06:35 -0600)
committerJens Axboe <axboe@kernel.dk>
Fri, 8 Aug 2025 12:35:14 +0000 (06:35 -0600)
commit33503c083fda048c77903460ac0429e1e2c0e341
tree161b8c3a6de755f59ffb92b4120037d34ab8948e
parent6f02527729bd31ca4e473bff19fda4ccd5889148
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: 087f997870a9 ("io_uring/memmap: implement mmap for regions")
Signed-off-by: Jens Axboe <axboe@kernel.dk>
io_uring/memmap.c