Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'io_uring-6.10-20240530' of git://git.kernel.dk/linux

Pull io_uring fixes from Jens Axboe:
"A couple of minor fixes for issues introduced in the 6.10 merge window:

- Ensure that all read/write ops have an appropriate cleanup handler
set (Breno)

- Regression for applications still doing multiple mmaps even if
FEAT_SINGLE_MMAP is set (me)

- Move kmsg inquiry setting above any potential failure point,
avoiding a spurious NONEMPTY flag setting on early error (me)"

* tag 'io_uring-6.10-20240530' of git://git.kernel.dk/linux:
io_uring/net: assign kmsg inq/flags before buffer selection
io_uring/rw: Free iovec before cleaning async data
io_uring: don't attempt to mmap larger than what the user asks for

+11 -5
+3 -2
io_uring/memmap.c
··· 244 244 struct io_ring_ctx *ctx = file->private_data; 245 245 size_t sz = vma->vm_end - vma->vm_start; 246 246 long offset = vma->vm_pgoff << PAGE_SHIFT; 247 + unsigned int npages; 247 248 void *ptr; 248 249 249 250 ptr = io_uring_validate_mmap_request(file, vma->vm_pgoff, sz); ··· 254 253 switch (offset & IORING_OFF_MMAP_MASK) { 255 254 case IORING_OFF_SQ_RING: 256 255 case IORING_OFF_CQ_RING: 257 - return io_uring_mmap_pages(ctx, vma, ctx->ring_pages, 258 - ctx->n_ring_pages); 256 + npages = min(ctx->n_ring_pages, (sz + PAGE_SIZE - 1) >> PAGE_SHIFT); 257 + return io_uring_mmap_pages(ctx, vma, ctx->ring_pages, npages); 259 258 case IORING_OFF_SQES: 260 259 return io_uring_mmap_pages(ctx, vma, ctx->sqe_pages, 261 260 ctx->n_sqe_pages);
+3 -3
io_uring/net.c
··· 1127 1127 flags |= MSG_DONTWAIT; 1128 1128 1129 1129 retry_multishot: 1130 + kmsg->msg.msg_inq = -1; 1131 + kmsg->msg.msg_flags = 0; 1132 + 1130 1133 if (io_do_buffer_select(req)) { 1131 1134 ret = io_recv_buf_select(req, kmsg, &len, issue_flags); 1132 1135 if (unlikely(ret)) 1133 1136 goto out_free; 1134 1137 sr->buf = NULL; 1135 1138 } 1136 - 1137 - kmsg->msg.msg_inq = -1; 1138 - kmsg->msg.msg_flags = 0; 1139 1139 1140 1140 if (flags & MSG_WAITALL) 1141 1141 min_ret = iov_iter_count(&kmsg->msg.msg_iter);
+5
io_uring/opdef.c
··· 516 516 }, 517 517 [IORING_OP_READ_FIXED] = { 518 518 .name = "READ_FIXED", 519 + .cleanup = io_readv_writev_cleanup, 519 520 .fail = io_rw_fail, 520 521 }, 521 522 [IORING_OP_WRITE_FIXED] = { 522 523 .name = "WRITE_FIXED", 524 + .cleanup = io_readv_writev_cleanup, 523 525 .fail = io_rw_fail, 524 526 }, 525 527 [IORING_OP_POLL_ADD] = { ··· 584 582 }, 585 583 [IORING_OP_READ] = { 586 584 .name = "READ", 585 + .cleanup = io_readv_writev_cleanup, 587 586 .fail = io_rw_fail, 588 587 }, 589 588 [IORING_OP_WRITE] = { 590 589 .name = "WRITE", 590 + .cleanup = io_readv_writev_cleanup, 591 591 .fail = io_rw_fail, 592 592 }, 593 593 [IORING_OP_FADVISE] = { ··· 696 692 }, 697 693 [IORING_OP_READ_MULTISHOT] = { 698 694 .name = "READ_MULTISHOT", 695 + .cleanup = io_readv_writev_cleanup, 699 696 }, 700 697 [IORING_OP_WAITID] = { 701 698 .name = "WAITID",