From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3726734253B for ; Wed, 15 Apr 2026 10:38:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.133.124 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776249497; cv=none; b=RI8UTwaWQxJ6aq538kSV7uBDpuQ+1Vor0CCOPGk8G3Yx6a0IfD7/1CofXKsTvluEWMQChwRBdiFz2V56ZAw+ULtTdo3o7IjVjJFKgu3H5lCMpBZkIBaK6I0Ri4jcY+2KTDQcJgZ0t0swXd/qIvp9Ze0VIEFWqb7rzMcikJ2sa9c= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776249497; c=relaxed/simple; bh=MTvLj66Y77ArXLSp+TSw8ghHRCXJwgL40oURLnpQzt4=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=DPm8XQzOdl4Yst+k0qaAWFXvgCCVoVtZB+NKXGoo/BjluzgvgXxJ/gXLUhEoT3RlCTjmZBWx8HaTqZ6M5ZahfDreVZrQLCFwV9A5gOwmama87jm+SqjkjSUSjAupa8L1nMkhDcGWc4wCACahb1JZNRXrNq6odkri5Sgc/3iNQ88= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=AJrnX99Y; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b=U0NcrzVV; arc=none smtp.client-ip=170.10.133.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="AJrnX99Y"; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b="U0NcrzVV" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1776249495; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=hHOnfYuW3tC+yUaHMZSnrjEvT22LJH6fSZwyXCPhnqE=; b=AJrnX99YSbM91yM5IEAYd1hTzUSta3A2/doH1UdZxvvcWgNRzuWtnuLBqnZuWYPNpvpMix nTaLHeNOubZesjyizOtecxt+f6ZecKrstn2W0satE1VkrVcA2bc0HGsoJlR3x4bBMcLUm2 kZEl1U+6AuQzLIkGvZ80b4t3lgY15dM= Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-198-sOQG2OUpM6GUnfgg6JefaA-1; Wed, 15 Apr 2026 06:38:14 -0400 X-MC-Unique: sOQG2OUpM6GUnfgg6JefaA-1 X-Mimecast-MFC-AGG-ID: sOQG2OUpM6GUnfgg6JefaA_1776249493 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-483786a09b1so70108905e9.3 for ; Wed, 15 Apr 2026 03:38:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1776249493; x=1776854293; darn=vger.kernel.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=hHOnfYuW3tC+yUaHMZSnrjEvT22LJH6fSZwyXCPhnqE=; b=U0NcrzVVjY6gjX5DffGCbMccj7Whri+rEWRWeYaofTN2IrFM4sp0h81cRl7C91bkwG aggg36rkrlKfEesRAWLDrmBYIaO/FQwjqqZXOkmT4lnqB1PxiGE5MAYZOq2fSnIAVNl0 AxVH0qemkkFKqsRQOEBRLrwOame+g5w7Wnne84LzAtkovuIzGyMSJd9TeAF1eKIzRIGi rQPDIwW1s/Nh53AURiwjbWHipsTO/+QDckmt1/V9KgN5bNiw6ycmeWggQx8NcxA8iC0S v+cdw0lJxeJW39MLJRmBIc/y/9KyfoQGWOfGVYVdM6OXIpO5rqjd0lN1FzOxV6tqVpa2 hJRg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776249493; x=1776854293; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=hHOnfYuW3tC+yUaHMZSnrjEvT22LJH6fSZwyXCPhnqE=; b=Y6PE2XkVcuU3lsNdG7A0kBkWrq8AgS7JfudIXk7I55BwMP1QoZpNFpWboAlTvEnlYQ rHuanihrvs1on8yRyCa4v8nuF6lBczu0WRhn7nN15vZz6L0Gn4JRyjzyMbqQmq5+H8Kf wMYKG956Iw+SkJdyf/70MGaETBb7JjkENsg28Y9Iwx6NLD8DEhUoPnN/Ozpn4+Lzld+2 qpQAYV6507KwWlWZwWisOagiYJ3gAlgQn5UTgvVOeMVAtmomw4nmDx0MAn2b3RuyvQdB hTNY+ZtDBTEf50Ix63tAF2pcm6+41Dv9tYzTp+YwWU+0GwdPXe7gTrhz4zJPAhODYgao 8QIA== X-Forwarded-Encrypted: i=1; AFNElJ8u5TgxudHWs2EHS48p6a4pYxco7JDRLvDkb4x2GeVbKnvnidnDIkTniIeC/n+LNWOCmw9xQqY=@vger.kernel.org X-Gm-Message-State: AOJu0Yx+R8QeXmFsNgp+31Zb0yHK4KkaTKi/fF2bQDdnowMVA6Wb9fPF HZwbFfkbgBGx8Xdey2U5DHtKCFcBze7KXBl1kYp9QVG+OhZyz5uk3xY4Y1J2yyOseQNH4xNh3jj p/9G4H6XiCgyOGhbGbP6zSFFAhR3pzo+BaIDKFci4y9pzRwjN0iLfeM9SMw== X-Gm-Gg: AeBDiesAROupdfwkgNHkLYXjm/grDs8MLReXWDWiB1MN8ktZo5dGyKl0WC7sICaeEff yDDZb29pdaDpKPawsHwFx8+gz3/sxxm/TGHV86f7HZ2r+Fi4ZbNOzezolNWN5a9WbJ40OW+kqFd 9ODzcKgz2LsTxjLYwpwtvSRJk+M0tOiNFk33yAp2nBaKZJ4ujSc9X/lqdT4Itg2faMSJ+3T/KOe g8AQwQCgCPw4wwIX81zy9VoJlQVDvfLis4SRPviHLQ54T6mwBXPiDyHIp62nGeUhbnd+M4HRbJF 9/r50OQHXuLriCeX2vH7XMW+DXWeUnR6J4WmzMoNEcFOmpyqdH1KJetVGXrOs7pbLzckmsVnBNT bSXcWU0gIFc6zCM/1FCdu2H917EOMwWc+e4KARaGmrSEjT1NBwZZsVpMqMsUwd0dZJVonAxzUd5 MBxXzzUQ== X-Received: by 2002:a05:600c:890e:b0:488:bd79:94d8 with SMTP id 5b1f17b1804b1-488d684331emr195084365e9.18.1776249492706; Wed, 15 Apr 2026 03:38:12 -0700 (PDT) X-Received: by 2002:a05:600c:890e:b0:488:bd79:94d8 with SMTP id 5b1f17b1804b1-488d684331emr195083925e9.18.1776249492197; Wed, 15 Apr 2026 03:38:12 -0700 (PDT) Received: from sgarzare-redhat (host-87-16-204-83.retail.telecomitalia.it. [87.16.204.83]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-488f0ec6cc6sm17072045e9.29.2026.04.15.03.38.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 15 Apr 2026 03:38:11 -0700 (PDT) Date: Wed, 15 Apr 2026 12:38:04 +0200 From: Stefano Garzarella To: Dexuan Cui Cc: kys@microsoft.com, haiyangz@microsoft.com, wei.liu@kernel.org, longli@microsoft.com, davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, horms@kernel.org, niuxuewei.nxw@antgroup.com, linux-hyperv@vger.kernel.org, virtualization@lists.linux.dev, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, stable@vger.kernel.org, Ben Hillis , Mitchell Levy Subject: Re: [PATCH net] hv_sock: Report EOF instead of -EIO for FIN Message-ID: References: <20260414234316.711578-1-decui@microsoft.com> Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Disposition: inline In-Reply-To: <20260414234316.711578-1-decui@microsoft.com> On Tue, Apr 14, 2026 at 04:43:16PM -0700, Dexuan Cui wrote: >Commit f0c5827d07cb unluckily causes a regression for the FIN packet, >and the final read syscall gets an error rather than 0. > >Ideally, we would want to fix hvs_channel_readable_payload() so that it >could return 0 in the FIN scenario, but it's not good for the hv_sock >driver to use the VMBus ringbuffer's cached priv_read_index, which is >internal data in the VMBus driver. > >Fix the regression in hv_sock by returning 0 rather than -EIO. > >Fixes: f0c5827d07cb ("hv_sock: Return the readable bytes in hvs_stream_has_data()") >Cc: stable@vger.kernel.org >Reported-by: Ben Hillis >Reported-by: Mitchell Levy >Signed-off-by: Dexuan Cui >--- > net/vmw_vsock/hyperv_transport.c | 18 ++++++++++++++++-- > 1 file changed, 16 insertions(+), 2 deletions(-) > >diff --git a/net/vmw_vsock/hyperv_transport.c b/net/vmw_vsock/hyperv_transport.c >index 069386a74557..63d3549125be 100644 >--- a/net/vmw_vsock/hyperv_transport.c >+++ b/net/vmw_vsock/hyperv_transport.c >@@ -703,8 +703,22 @@ static s64 hvs_stream_has_data(struct vsock_sock *vsk) > switch (hvs_channel_readable_payload(hvs->chan)) { > case 1: > need_refill = !hvs->recv_desc; >- if (!need_refill) >- return -EIO; >+ if (!need_refill) { Can we drop `need_refill` entirly and just check `hvs->recv_desc` here? Mainly because now the comment we are adding is confusing me about what `need_refill` means. The rest LGTM. Thanks, Stefano >+ /* Here hvs->recv_data_len is 0, so hvs->recv_desc must >+ * be NULL unless it points to the 0-byte-payload FIN >+ * packet: see hvs_update_recv_data(). >+ * >+ * Here all the payload has been dequeued, but >+ * hvs_channel_readable_payload() still returns 1, >+ * because the VMBus ringbuffer's read_index is not >+ * updated for the FIN packet: hvs_stream_dequeue() -> >+ * hv_pkt_iter_next() updates the cached priv_read_index >+ * but has no opportunity to update the read_index in >+ * hv_pkt_iter_close() as hvs_stream_has_data() returns >+ * 0 for the FIN packet, so it won't get dequeued. >+ */ >+ return 0; >+ } > > hvs->recv_desc = hv_pkt_iter_first(hvs->chan); > if (!hvs->recv_desc) >-- >2.49.0 > >