mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 02:30:34 +02:00 
			
		
		
		
	io_uring: fix multishot accept ordering
Similar to multishot poll, drop multishot accept when CQE overflow occurs. Signed-off-by: Dylan Yudaken <dylany@fb.com> Link: https://lore.kernel.org/r/20220630091231.1456789-10-dylany@fb.com Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
		
							parent
							
								
									a2da676376
								
							
						
					
					
						commit
						cbd2574854
					
				
					 1 changed files with 7 additions and 4 deletions
				
			
		| 
						 | 
				
			
			@ -656,11 +656,14 @@ int io_accept(struct io_kiocb *req, unsigned int issue_flags)
 | 
			
		|||
		return IOU_OK;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (ret < 0)
 | 
			
		||||
		return ret;
 | 
			
		||||
	if (io_post_aux_cqe(ctx, req->cqe.user_data, ret, IORING_CQE_F_MORE, true))
 | 
			
		||||
	if (ret >= 0 &&
 | 
			
		||||
	    io_post_aux_cqe(ctx, req->cqe.user_data, ret, IORING_CQE_F_MORE, false))
 | 
			
		||||
		goto retry;
 | 
			
		||||
	return -ECANCELED;
 | 
			
		||||
 | 
			
		||||
	io_req_set_res(req, ret, 0);
 | 
			
		||||
	if (req->flags & REQ_F_POLLED)
 | 
			
		||||
		return IOU_STOP_MULTISHOT;
 | 
			
		||||
	return IOU_OK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int io_socket_prep(struct io_kiocb *req, const struct io_uring_sqe *sqe)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue