mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-03 10:10:33 +02:00 
			
		
		
		
	io_uring/kbuf: don't truncate end buffer for multiple buffer peeks
If peeking a bunch of buffers, normally io_ring_buffers_peek() will
truncate the end buffer. This isn't optimal as presumably more data will
be arriving later, and hence it's better to stop with the last full
buffer rather than truncate the end buffer.
Cc: stable@vger.kernel.org
Fixes: 35c8711c8f ("io_uring/kbuf: add helpers for getting/peeking multiple buffers")
Reported-by: Christian Mazakas <christian.mazakas@gmail.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
			
			
This commit is contained in:
		
							parent
							
								
									c538f400fa
								
							
						
					
					
						commit
						26ec15e4b0
					
				
					 1 changed files with 4 additions and 1 deletions
				
			
		| 
						 | 
				
			
			@ -270,8 +270,11 @@ static int io_ring_buffers_peek(struct io_kiocb *req, struct buf_sel_arg *arg,
 | 
			
		|||
		/* truncate end piece, if needed, for non partial buffers */
 | 
			
		||||
		if (len > arg->max_len) {
 | 
			
		||||
			len = arg->max_len;
 | 
			
		||||
			if (!(bl->flags & IOBL_INC))
 | 
			
		||||
			if (!(bl->flags & IOBL_INC)) {
 | 
			
		||||
				if (iov != arg->iovs)
 | 
			
		||||
					break;
 | 
			
		||||
				buf->len = len;
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		iov->iov_base = u64_to_user_ptr(buf->addr);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue