From mboxrd@z Thu Jan  1 00:00:00 1970
Received: from mail-pl1-f171.google.com (mail-pl1-f171.google.com [209.85.214.171])
	(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
	(No client certificate requested)
	by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9D1421A7253
	for <io-uring@vger.kernel.org>; Tue,  1 Apr 2025 19:10:59 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.171
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
	t=1743534661; cv=none; b=gGKMp0vCQA/DX5TVulVXgchdZVq/7Ka01WICeYvQ0DdAfAXIrKaDrL2L9+nGwEIWMoOsHScjTr/UU+RkMl6SWp0LhCfIHSjbNk5V78CfkMywhiWSaSG7ElCVjdsDNO0SLQir4PtODWfqc0c4u379HaLCrFVdAW9k6xXudRlTyJg=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
	s=arc-20240116; t=1743534661; c=relaxed/simple;
	bh=39wIHJouwCFU4itGDEddaRqOYuRAMjLFcaBIlbKYUHg=;
	h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From:
	 In-Reply-To:Content-Type; b=dxxmTjGuyTVKdIhpiEVE+WRdD6IZJI3b49lm5adBp3F+XGbcF65Bkv6RgWwdNxnT09/bJI6Ce9d2/8sfWU+xbcopJGayxIk4hZV9eFe3OoK0d/M2eE2IZjVlL4q7rcw4+6+GbwG8lWXzBwejcIEVHKVCPQ5oP7kpDsK+WeYHdOk=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=davidwei.uk; spf=none smtp.mailfrom=davidwei.uk; dkim=pass (2048-bit key) header.d=davidwei-uk.20230601.gappssmtp.com header.i=@davidwei-uk.20230601.gappssmtp.com header.b=aGfrd8jw; arc=none smtp.client-ip=209.85.214.171
Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=davidwei.uk
Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=davidwei.uk
Authentication-Results: smtp.subspace.kernel.org;
	dkim=pass (2048-bit key) header.d=davidwei-uk.20230601.gappssmtp.com header.i=@davidwei-uk.20230601.gappssmtp.com header.b="aGfrd8jw"
Received: by mail-pl1-f171.google.com with SMTP id d9443c01a7336-2243803b776so46771105ad.0
        for <io-uring@vger.kernel.org>; Tue, 01 Apr 2025 12:10:59 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=davidwei-uk.20230601.gappssmtp.com; s=20230601; t=1743534659; x=1744139459; darn=vger.kernel.org;
        h=content-transfer-encoding:in-reply-to:from:references:cc:to
         :content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=YP+KGabLT56jAzy9JEhpvLE2TwMaIKxI5QpZ93GyGpQ=;
        b=aGfrd8jwAJApB+FIeDBTesLBRt1IkPWrWGaYrMJaUw6SsdzEOcX/V1z85vu5TlUFZH
         53aA+zyUGaHSxbTp9e5gFZEA+/BVAZnmOt+yGadrammiNFaI03pVLsUW6shDJ42q/rav
         P9ABKugedSu/g1NMnhRmq+TNhfOJyuI7pjdcTVSmWqxVvGrgOfmh1Fq90HGMannz8C7i
         XSZ3xHO3R6EMCJnEF06a6FvjaXHF7iE16v/4thOyPKht5lc49GwqpSjmZ9tGdYcfAKk+
         1BQeVLsg6y69H6nu+Wdz0FDnM5ltZ9QPaFX0ps/hPUh6KMZTfJiDuO8u11DsGuVKiPVB
         Ol0w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1743534659; x=1744139459;
        h=content-transfer-encoding:in-reply-to:from:references:cc:to
         :content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=YP+KGabLT56jAzy9JEhpvLE2TwMaIKxI5QpZ93GyGpQ=;
        b=K2GlyeiYis9rqBHVe7RYJjizpKVmKmtoJVOQMYGkT8Tu7pEO7d/xvf1wDNlKZKAPRk
         fNtY+TnLt2Qqo4jt3YNJkNbW69/fkFSdBpqS5WtnPnSoHfE8UxcaC9lvUDtUzrawnt7I
         IULDR/HpPDbs4XYMH6/YJHOLijkWRpYarvmjTojzeSYSGiF4Sxn7TRLTq9cyQXLpRfqp
         IEjJQzBP9X/k6PmdFR+hhhaburgmvST7kHF0Ggo6Bo9NyfF2+9NTrYUfe4fLOlUzsi20
         8QyA+IQ9p7LcEHTK4gWpF0F8biW8QDepjSKQoCKUgx5eq27QWythMtk0UX1E+X3IRXnd
         ITfg==
X-Forwarded-Encrypted: i=1; AJvYcCV2R4AsamaumZagcBNBVj9NjZf0JHM8DIhnpdhWckOnPt8m/iVSLKGfny2+8nTYnWtKBgfthy2M6A==@vger.kernel.org
X-Gm-Message-State: AOJu0YzbwqnNE53NnyAM/jSZbyaB+LmVACmq4dib7K2VJs2bUtFwGx3R
	30Ag6W/PgXRHKZEE9/ydKAE2YkAfqDZfslEut/7S6KkVoxhRN7CYkQ/VjJR+CiRXOZQdkfZS3Bs
	E
X-Gm-Gg: ASbGnct9z942+rtydRPl4+9SWktU0EBUB3qf9NjLy8FhPo5BsgHulKY4yEtEQcfKGFA
	ObFhQGkuPBrFFJUpcHFAZvEk3tnvDQk890WiJ5yGQg7+9j896csg6RziAcoT2FuKYx3er3MyNlL
	qgtMVs+q6dgrJivpTG11aRmM5L8WVj1A/MbddCz7A5/gjyNO5F3MsuKMYWdDDmGIdlUk90ndYde
	bUonbZk8oHVtNc66q9dwWYRswV8ncQJyOW76iBLZ2cueZtdESC1PWnw2thylvtcaiwhECSFNNtQ
	lGKweiwRFtD8RBD22DYtErqHOArHwrgYyvT/ctXuuerYNRcIW5FUScSeqURcTGpu4bjK1EF4oGl
	Ypwip6hA=
X-Google-Smtp-Source: AGHT+IEqo9RyMK8teSDwhulXpeelwZ1nqYSe+C4mLTcUi4RcwTwUlaTFaQwobBdMnjbtyti1eeoxew==
X-Received: by 2002:a05:6a00:1909:b0:736:6268:9ec9 with SMTP id d2e1a72fcca58-73980424500mr20847109b3a.16.1743534658762;
        Tue, 01 Apr 2025 12:10:58 -0700 (PDT)
Received: from ?IPV6:2a03:83e0:1156:1:1cf1:8569:9916:d71f? ([2620:10d:c090:500::5:4565])
        by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-73971064088sm9587725b3a.93.2025.04.01.12.10.58
        (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
        Tue, 01 Apr 2025 12:10:58 -0700 (PDT)
Message-ID: <20e4d11f-688f-46de-9094-765073f0dc41@davidwei.uk>
Date: Tue, 1 Apr 2025 12:10:57 -0700
Precedence: bulk
X-Mailing-List: io-uring@vger.kernel.org
List-Id: <io-uring.vger.kernel.org>
List-Subscribe: <mailto:io-uring+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:io-uring+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] io_uring/zcrx: return early from io_zcrx_recv_skb if
 readlen is 0
Content-Language: en-GB
To: Jens Axboe <axboe@kernel.dk>, io-uring@vger.kernel.org
Cc: Pavel Begunkov <asml.silence@gmail.com>
References: <20250401182813.1115909-1-dw@davidwei.uk>
 <e89aef50-7364-4ab9-9582-aef6aec8cffb@kernel.dk>
From: David Wei <dw@davidwei.uk>
In-Reply-To: <e89aef50-7364-4ab9-9582-aef6aec8cffb@kernel.dk>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 2025-04-01 11:56, Jens Axboe wrote:
> On 4/1/25 12:28 PM, David Wei wrote:
>> When readlen is set for a recvzc request, tcp_read_sock() will call
>> io_zcrx_recv_skb() one final time with len == desc->count == 0. This is
>> caused by the !desc->count check happening too late. The offset + 1 !=
>> skb->len happens earlier and causes the while loop to continue.
>>
>> Fix this in io_zcrx_recv_skb() instead of tcp_read_sock(). Return early
>> if len is 0 i.e. the read is done.
> 
> Needs a Fixes tag, which looks like it should be:
> 
> Fixes: 6699ec9a23f8 ("io_uring/zcrx: add a read limit to recvzc requests")
> 
> ?

Sorry I missed that, will add the tag.

> 
>> Signed-off-by: David Wei <dw@davidwei.uk>
>> ---
>>  io_uring/zcrx.c | 2 ++
>>  1 file changed, 2 insertions(+)
>>
>> diff --git a/io_uring/zcrx.c b/io_uring/zcrx.c
>> index 9c95b5b6ec4e..d1dd25e7cf4a 100644
>> --- a/io_uring/zcrx.c
>> +++ b/io_uring/zcrx.c
>> @@ -818,6 +818,8 @@ io_zcrx_recv_skb(read_descriptor_t *desc, struct sk_buff *skb,
>>  	int ret = 0;
>>  
>>  	len = min_t(size_t, len, desc->count);
>> +	if (!len)
>> +		goto out;
> 
> just return 0 here? Jumping to out would make more sense if there
> are things to fixup/account at this point, but it's just going
> to find offset == start_off and return 'ret', which is 0 anyway.
> 

Makes sense, yeah. I'll return 0 here early.