Received: by 2002:a05:6902:102b:0:0:0:0 with SMTP id x11csp3084693ybt; Mon, 29 Jun 2020 14:58:16 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzAVDV3ijSYw1u5u5HWrMRcHotiK1ZvaDexeWnlSeaopAQTOnN75GjllX6LGf1gI2TrE1uB X-Received: by 2002:a50:f384:: with SMTP id g4mr19053589edm.205.1593467896844; Mon, 29 Jun 2020 14:58:16 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1593467896; cv=none; d=google.com; s=arc-20160816; b=tS1NQGGxVywSAxZMUi+DWxAFeqTJSTNV7LONihExB9tKXINoE8U5zopR8XpBifNYey Jjbiw26zFqaK5ooCWfAi9hzjTtTTtGw/uXmg1VhG9/X31B1twUzPxQU26tO8ytJpwDMT sPKGGvIqpmbZP9dTFmparMVytYBwViPZHzxnCuT7+d3jsmACdDw8ulPEI9qSttSsn6Si ZgWuCDgHCVCBA3IKTvsXLPBPQ9af/Sj/NZ98/Hri38/giBK6DkG3cEAUZ3ILTyYp1lLf 7GLqr0oV/dE43th8N5HSfzcTmCY0ZbzNuamW5P0cezZJxMGl59oCmrS/SGRzSPBdy/zi P2Dg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=jXUFl7suav9Y/kIQidXzupJGcNRJMYONMiP8whDazKU=; b=cYboX+bxuALde5CnwMe0va5Z2ZQYhKJLYrhJZNvnowIS5/QxibHSAy3LYjW1zA9xQe 0+N9bL8I700jdLeCc3P/qp2rOtjo4EChCWGTgsER9S4jg5LekWoMtZDti7PoLpZ8YJUb hZa6q/VRD+Ufdd1Swl7boBY7sFeQvfB090Kc+0YQViaE49xh03x7wrUN26r3z4/jxAyS mq8Bt/q4Ru/rpY7nqz+fkMBcDuBAMHPMBcJy+TFZTLDqEXqd/fcQjZM+pkgZTpaZZWgS 8EgAw/fOyG+9tlob50O3bwvWRhuRb/YH42dHgW82IAtBQbAWITvFS20TJCS8Hx9viEy7 /pKg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=ZWT9pIsc; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id i26si529865ejx.372.2020.06.29.14.57.53; Mon, 29 Jun 2020 14:58:16 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=ZWT9pIsc; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1733278AbgF2Vyh (ORCPT + 99 others); Mon, 29 Jun 2020 17:54:37 -0400 Received: from mail.kernel.org ([198.145.29.99]:56790 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726590AbgF2Sfd (ORCPT ); Mon, 29 Jun 2020 14:35:33 -0400 Received: from sasha-vm.mshome.net (c-73-47-72-35.hsd1.nh.comcast.net [73.47.72.35]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 0094C246D0; Mon, 29 Jun 2020 15:20:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1593444023; bh=7GUbe3H6bGsgLR7A+WgWytyJG14XwkQ1TsxdR+n07kk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ZWT9pIsc+kSKgJB5WNlp+Fw0diRhYu1UlhNe0HRIIF0rtTWNt1ivdDesw7DRIejVB tXvvzOwTI1QO0bEhSyRyFQWBwOgprjlRnwJa0DH0clatIWwCDvnsg5AhXIXp37QhHC 9RclHrl1PV8Fh8xvzez05rX+kba658vxYK2fgKWc= From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: David Howells , Sasha Levin Subject: [PATCH 5.7 130/265] rxrpc: Fix handling of rwind from an ACK packet Date: Mon, 29 Jun 2020 11:16:03 -0400 Message-Id: <20200629151818.2493727-131-sashal@kernel.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200629151818.2493727-1-sashal@kernel.org> References: <20200629151818.2493727-1-sashal@kernel.org> MIME-Version: 1.0 X-KernelTest-Patch: http://kernel.org/pub/linux/kernel/v5.x/stable-review/patch-5.7.7-rc1.gz X-KernelTest-Tree: git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git X-KernelTest-Branch: linux-5.7.y X-KernelTest-Patches: git://git.kernel.org/pub/scm/linux/kernel/git/stable/stable-queue.git X-KernelTest-Version: 5.7.7-rc1 X-KernelTest-Deadline: 2020-07-01T15:14+00:00 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: David Howells [ Upstream commit a2ad7c21ad8cf1ce4ad65e13df1c2a1c29b38ac5 ] The handling of the receive window size (rwind) from a received ACK packet is not correct. The rxrpc_input_ackinfo() function currently checks the current Tx window size against the rwind from the ACK to see if it has changed, but then limits the rwind size before storing it in the tx_winsize member and, if it increased, wake up the transmitting process. This means that if rwind > RXRPC_RXTX_BUFF_SIZE - 1, this path will always be followed. Fix this by limiting rwind before we compare it to tx_winsize. The effect of this can be seen by enabling the rxrpc_rx_rwind_change tracepoint. Fixes: 702f2ac87a9a ("rxrpc: Wake up the transmitter if Rx window size increases on the peer") Signed-off-by: David Howells Signed-off-by: Sasha Levin --- net/rxrpc/input.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/net/rxrpc/input.c b/net/rxrpc/input.c index 3be4177baf707..22dec6049e1bb 100644 --- a/net/rxrpc/input.c +++ b/net/rxrpc/input.c @@ -723,13 +723,12 @@ static void rxrpc_input_ackinfo(struct rxrpc_call *call, struct sk_buff *skb, ntohl(ackinfo->rxMTU), ntohl(ackinfo->maxMTU), rwind, ntohl(ackinfo->jumbo_max)); + if (rwind > RXRPC_RXTX_BUFF_SIZE - 1) + rwind = RXRPC_RXTX_BUFF_SIZE - 1; if (call->tx_winsize != rwind) { - if (rwind > RXRPC_RXTX_BUFF_SIZE - 1) - rwind = RXRPC_RXTX_BUFF_SIZE - 1; if (rwind > call->tx_winsize) wake = true; - trace_rxrpc_rx_rwind_change(call, sp->hdr.serial, - ntohl(ackinfo->rwind), wake); + trace_rxrpc_rx_rwind_change(call, sp->hdr.serial, rwind, wake); call->tx_winsize = rwind; } -- 2.25.1