diff --git a/io_uring/net.c b/io_uring/net.c index b1bf7dbec5d2..eeab88e77fd8 100644 --- a/io_uring/net.c +++ b/io_uring/net.c @@ -1197,6 +1197,8 @@ static int io_recv_buf_select(struct io_kiocb *req, struct io_async_msghdr *kmsg *sel = io_buffer_select(req, &len, sr->buf_group, issue_flags); if (!sel->addr) return -ENOBUFS; + /* ring provided buffers can be up to 4G, keep len an int */ + len = min_t(size_t, len, MAX_RW_COUNT); sr->buf = sel->addr; sr->len = len; map_ubuf: