Re: [PATCH v2 1/2] io_uring/zcrx: add single shot recvzc

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 2/21/25 20:51, David Wei wrote:
diff --git a/io_uring/zcrx.c b/io_uring/zcrx.c
index f2d326e18e67..74bca4e471bc 100644
--- a/io_uring/zcrx.c
+++ b/io_uring/zcrx.c
...
  static int io_zcrx_tcp_recvmsg(struct io_kiocb *req, struct io_zcrx_ifq *ifq,
  				struct sock *sk, int flags,
-				unsigned issue_flags)
+				unsigned issue_flags, unsigned int *outlen)
  {
+	unsigned int len = *outlen;
+	bool limit = len != UINT_MAX;
  	struct io_zcrx_args args = {
  		.req = req,
  		.ifq = ifq,
  		.sock = sk->sk_socket,
  	};
  	read_descriptor_t rd_desc = {
-		.count = 1,
+		.count = len,
  		.arg.data = &args,
  	};
  	int ret;
lock_sock(sk);
  	ret = tcp_read_sock(sk, &rd_desc, io_zcrx_recv_skb);
+	if (limit && ret)
+		*outlen = len - ret;

ret can be negative, the check will pass and the calculations
will turn it into something weird.

--
Pavel Begunkov





[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux