diff options
| -rw-r--r-- | io_uring/memmap.c | 5 | ||||
| -rw-r--r-- | io_uring/net.c | 6 | ||||
| -rw-r--r-- | io_uring/opdef.c | 5 | 
3 files changed, 11 insertions, 5 deletions
| diff --git a/io_uring/memmap.c b/io_uring/memmap.c index 4785d6af5fee..a0f32a255fd1 100644 --- a/io_uring/memmap.c +++ b/io_uring/memmap.c @@ -244,6 +244,7 @@ __cold int io_uring_mmap(struct file *file, struct vm_area_struct *vma)  	struct io_ring_ctx *ctx = file->private_data;  	size_t sz = vma->vm_end - vma->vm_start;  	long offset = vma->vm_pgoff << PAGE_SHIFT; +	unsigned int npages;  	void *ptr;  	ptr = io_uring_validate_mmap_request(file, vma->vm_pgoff, sz); @@ -253,8 +254,8 @@ __cold int io_uring_mmap(struct file *file, struct vm_area_struct *vma)  	switch (offset & IORING_OFF_MMAP_MASK) {  	case IORING_OFF_SQ_RING:  	case IORING_OFF_CQ_RING: -		return io_uring_mmap_pages(ctx, vma, ctx->ring_pages, -						ctx->n_ring_pages); +		npages = min(ctx->n_ring_pages, (sz + PAGE_SIZE - 1) >> PAGE_SHIFT); +		return io_uring_mmap_pages(ctx, vma, ctx->ring_pages, npages);  	case IORING_OFF_SQES:  		return io_uring_mmap_pages(ctx, vma, ctx->sqe_pages,  						ctx->n_sqe_pages); diff --git a/io_uring/net.c b/io_uring/net.c index 0a48596429d9..7c98c4d50946 100644 --- a/io_uring/net.c +++ b/io_uring/net.c @@ -1127,6 +1127,9 @@ int io_recv(struct io_kiocb *req, unsigned int issue_flags)  		flags |= MSG_DONTWAIT;  retry_multishot: +	kmsg->msg.msg_inq = -1; +	kmsg->msg.msg_flags = 0; +  	if (io_do_buffer_select(req)) {  		ret = io_recv_buf_select(req, kmsg, &len, issue_flags);  		if (unlikely(ret)) @@ -1134,9 +1137,6 @@ retry_multishot:  		sr->buf = NULL;  	} -	kmsg->msg.msg_inq = -1; -	kmsg->msg.msg_flags = 0; -  	if (flags & MSG_WAITALL)  		min_ret = iov_iter_count(&kmsg->msg.msg_iter); diff --git a/io_uring/opdef.c b/io_uring/opdef.c index 2de5cca9504e..2e3b7b16effb 100644 --- a/io_uring/opdef.c +++ b/io_uring/opdef.c @@ -516,10 +516,12 @@ const struct io_cold_def io_cold_defs[] = {  	},  	[IORING_OP_READ_FIXED] = {  		.name			= "READ_FIXED", +		.cleanup		= io_readv_writev_cleanup,  		.fail			= io_rw_fail,  	},  	[IORING_OP_WRITE_FIXED] = {  		.name			= "WRITE_FIXED", +		.cleanup		= io_readv_writev_cleanup,  		.fail			= io_rw_fail,  	},  	[IORING_OP_POLL_ADD] = { @@ -582,10 +584,12 @@ const struct io_cold_def io_cold_defs[] = {  	},  	[IORING_OP_READ] = {  		.name			= "READ", +		.cleanup		= io_readv_writev_cleanup,  		.fail			= io_rw_fail,  	},  	[IORING_OP_WRITE] = {  		.name			= "WRITE", +		.cleanup		= io_readv_writev_cleanup,  		.fail			= io_rw_fail,  	},  	[IORING_OP_FADVISE] = { @@ -692,6 +696,7 @@ const struct io_cold_def io_cold_defs[] = {  	},  	[IORING_OP_READ_MULTISHOT] = {  		.name			= "READ_MULTISHOT", +		.cleanup		= io_readv_writev_cleanup,  	},  	[IORING_OP_WAITID] = {  		.name			= "WAITID", | 
