From patchwork Sat Jun 21 19:37:30 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: "Chia-Yu Chang \(Nokia\)" X-Patchwork-Id: 898917 Received: from DUZPR83CU001.outbound.protection.outlook.com (mail-northeuropeazon11012067.outbound.protection.outlook.com [52.101.66.67]) (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 8E2AC26A1AA; Sat, 21 Jun 2025 19:38:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.66.67 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750534684; cv=fail; b=fOBV7rdgBzVBNRGKto8tFfqOUSQT/ARO8gpx6OI0xWfGQbXiKFgjUBmlTSe4LvvII0ipuhm4K8imxXKPgQgdBUsDETP8nlWV+/MC5er868X8o0qrNOQ1KWUdpj9SWQ79WBH/1IhECVQ7YLSy0SPrq2fwwJ6JnfAcP8QqiDIqL0s= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750534684; c=relaxed/simple; bh=iFcTZmQz+KoxMbWnmT2MTrBRX096Ooi/MssASdIt668=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version:Content-Type; b=e1cVdmGiG+ukvneD9mcRRmSkG9qlJ2uJDBz87ei2ei4mpmqAWvArqZDRmv8QQ3oGmvWYw4dOpm+tjT0I4OIQyfT2s9bZ0MGb47OVAs0fuQFfU92z5IlwN7pg9ql1M34FW74FhQlNZLpLzkT26SjQ+9WoD4Ngz8LS2hKloYjQZIM= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nokia-bell-labs.com; spf=fail smtp.mailfrom=nokia-bell-labs.com; dkim=pass (2048-bit key) header.d=nokia-bell-labs.com header.i=@nokia-bell-labs.com header.b=rVDu5ZI+; arc=fail smtp.client-ip=52.101.66.67 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nokia-bell-labs.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nokia-bell-labs.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=nokia-bell-labs.com header.i=@nokia-bell-labs.com header.b="rVDu5ZI+" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=QMquD+z+sf9uP2RWYr/L4kZxnGG2IUTtrnim3cTLCuCV5IdGxwdjWvt1MYJ1Gn6RvAcsQjISFkVZwGGUhd6/gNh00WKL98mS/HgJh8JMDeNpYdtAB6eNGX9KOZe43Zt9LVeZ/8AFeqW/C35HxyYWIRFFfIEeWZlnnBw4WQ7RKeVAUHR24l9XOgNTSiQO1e1eBWZ5BjoG9zrdEuhOxNtmbnGjf/yKIkh27+5X+2ZI9IO3kDk4Wp0T31PP84R3XdhBeUBUkp3zsLi2fWaq5cNO650iIlvmp4Haru0M24cbax2iG6cmW8L7Z7g2GHQ9cdXPoK4+S3eFcrNEb4Caf3FMxQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=ohyzgWWmf7ArvRe6GftbHhI6Bzqti+BWAQUIhv2YGRs=; b=Xk7Xow7MGCWEMdLXHZ9Q5Ncwayt1QBvtjeZDFxQO+peIpCPqLBWBF8WUZoIRDfvE+YjHOOc7yFtzZrfdbr777qixDLTa7ngCWdrjrNVx3LK0gshLHKm1VcH+5/7IHqPMzOPNb9PsE5mB0OxydTLZJ/CNDcKbdYHVqi0s9Ge+0CkXZ0YlI83oX/HFjy/a5R7Cq/KHVLyLqJhiQf2WeKprS/zgx+ydt6eeKRYQpqUypBw5YJ2K4ctwTIG9fom6ptQY/AlMvXq7MIxwzX9NLPQ5KhVv4EAN0UCu5C4BJOmRY95HTJqY+82mb5m2CuF9yVhpYaEb0t/5j0Y/r44Dr+4kzQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 131.228.6.101) smtp.rcpttodomain=amazon.com smtp.mailfrom=nokia-bell-labs.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nokia-bell-labs.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nokia-bell-labs.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ohyzgWWmf7ArvRe6GftbHhI6Bzqti+BWAQUIhv2YGRs=; b=rVDu5ZI+ftT4i0x7T1ma88IAYzP5qppceRhiNkWuuwiMdIiQ/5xxqRBu+TQ2KLXvM6iPkimQA3Wv9MULqM2tyXtviEfLmcerONocGoHfvc3JE3vtVplmsBcdhMEkJywQMDLphPrhWnPxxkJyLLdTGC+TfI2D3faEBNq/Cm3BcnOPJdGDlenF3A/78jbakG+35eUZT6peWY7NOiJjPQlVRpYoFQ3/yloFp3pE2zDVKoP1ZqKicQrfCRXpPCJY9moGu6rDyAzS4SV5wVybSsAvIgBXdSlSyo0mVKRfdSbVljweCS73Q7o52twChB7m7KwbehJW2suegeNQclDQ6bnGWQ== Received: from DU2PR04CA0259.eurprd04.prod.outlook.com (2603:10a6:10:28e::24) by AS8PR07MB7432.eurprd07.prod.outlook.com (2603:10a6:20b:289::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8857.27; Sat, 21 Jun 2025 19:37:59 +0000 Received: from DB3PEPF0000885D.eurprd02.prod.outlook.com (2603:10a6:10:28e:cafe::c8) by DU2PR04CA0259.outlook.office365.com (2603:10a6:10:28e::24) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8857.27 via Frontend Transport; Sat, 21 Jun 2025 19:37:59 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 131.228.6.101) smtp.mailfrom=nokia-bell-labs.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nokia-bell-labs.com; Received-SPF: Pass (protection.outlook.com: domain of nokia-bell-labs.com designates 131.228.6.101 as permitted sender) receiver=protection.outlook.com; client-ip=131.228.6.101; helo=fr712usmtp1.zeu.alcatel-lucent.com; pr=C Received: from fr712usmtp1.zeu.alcatel-lucent.com (131.228.6.101) by DB3PEPF0000885D.mail.protection.outlook.com (10.167.242.8) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8857.21 via Frontend Transport; Sat, 21 Jun 2025 19:37:59 +0000 Received: from sarah.nbl.nsn-rdnet.net (sarah.nbl.nsn-rdnet.net [10.0.73.150]) by fr712usmtp1.zeu.alcatel-lucent.com (Postfix) with ESMTP id A3AC91C002B; Sat, 21 Jun 2025 22:37:57 +0300 (EEST) From: chia-yu.chang@nokia-bell-labs.com To: pabeni@redhat.com, edumazet@google.com, linux-doc@vger.kernel.org, corbet@lwn.net, horms@kernel.org, dsahern@kernel.org, kuniyu@amazon.com, bpf@vger.kernel.org, netdev@vger.kernel.org, dave.taht@gmail.com, jhs@mojatatu.com, kuba@kernel.org, stephen@networkplumber.org, xiyou.wangcong@gmail.com, jiri@resnulli.us, davem@davemloft.net, andrew+netdev@lunn.ch, donald.hunter@gmail.com, ast@fiberby.net, liuhangbin@gmail.com, shuah@kernel.org, linux-kselftest@vger.kernel.org, ij@kernel.org, ncardwell@google.com, koen.de_schepper@nokia-bell-labs.com, g.white@cablelabs.com, ingemar.s.johansson@ericsson.com, mirja.kuehlewind@ericsson.com, cheshire@apple.com, rs.ietf@gmx.at, Jason_Livingood@comcast.com, vidhi_goel@apple.com Cc: Chia-Yu Chang Subject: [PATCH v9 net-next 08/15] tcp: sack option handling improvements Date: Sat, 21 Jun 2025 21:37:30 +0200 Message-Id: <20250621193737.16593-9-chia-yu.chang@nokia-bell-labs.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250621193737.16593-1-chia-yu.chang@nokia-bell-labs.com> References: <20250621193737.16593-1-chia-yu.chang@nokia-bell-labs.com> Precedence: bulk X-Mailing-List: linux-kselftest@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DB3PEPF0000885D:EE_|AS8PR07MB7432:EE_ X-MS-Office365-Filtering-Correlation-Id: 6d9601e9-0cd8-4904-96f5-08ddb0fb2101 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|36860700013|376014|82310400026|7416014|1800799024|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?q?FhsEuHKNg4BoHMNHdzw45s1Bn6JDtG2?= =?utf-8?q?aFGc0cN3E74w/gOMDKVovRYpqck5UJ7pJhEvSiHdFziVqC5Lz2BzdOHP/sfvTmoN0?= =?utf-8?q?UUVU/j5wJ9JJwSuhTr7+PYnbdNJFpeVaiudmZMzRh1puAPWsz6WWdrmmXW8L4oaN0?= =?utf-8?q?H2Q3nkCFHZcfhNfSLLCq6gCajLUrMLj42HQ1pIhqaySJxp6ySPMqBpDrg2UDZdMzx?= =?utf-8?q?6IqNa/xSV8v1FP6bmPRh64k3UX5v4CMWCnyRmVFogQTkdLt81eZ4IrG2IjO5v5wcH?= =?utf-8?q?bhmZsI8V+Buup5xUrA5KkjOau4XqEkoGLEHsbGM8tQGR/6/3iKCYT6t9fvhYjdxgq?= =?utf-8?q?52HDD99oiPsNPhkc9wvqC0sJUDq2PqkHzaXOZcLCUYbvJ5LUohbvrE83JURKiQ0LY?= =?utf-8?q?LoT5ht2tOJnaFpwPYhbOGTbyxCMGixCnOy2V+znaE9ZzmlddL+xAeH4vFnxCFhb9t?= =?utf-8?q?slxgzYL5MckBnXa8A2iBKWZnQ3gxgrBxB8wM1JY9BSmPhU5ihCqUABM6uRwcKP8ry?= =?utf-8?q?zDKqqEYDmjSPgv7JBmmr4vq4dHSeaprTJU095Yny6luKDzKSc/7s8bdLw2l6oK2zN?= =?utf-8?q?J2719/NmcWOUkuqAwD73B/2mdywcxmZz3gGrz//7ylR230aLZvQwvFzze6U84Pcuh?= =?utf-8?q?29zy8XdWpEod+GYyYKa0RUZLN5/+XtSKKIbwB9XtWpm+NPpylscKxagCsZp6frsFF?= =?utf-8?q?i+w7kcEUcPE5iHC448/6rDTx3RpM7Res5Znj9LnHlsUG+a1T+x8UiOtmGEx0tL9JQ?= =?utf-8?q?hZ9rgFSHTEZr9xkC754twY/CNYfA0vxYH3nwNNbzP+lMxbMkXF8abofz4NaWTExqs?= =?utf-8?q?FtWeZ/+OrVEuEkxZ5K+cUYqZ8vKPPsttAkNc4Nx4q8/thxtAttILqsq7DhTxX6mFa?= =?utf-8?q?2GjVyNwLEXSe3vrQgm7iY1GofAurq2Qh0JgzX4HkFdS+N46/s7xOuFF7FkcdcEBWV?= =?utf-8?q?3fjJkOb/xWpHS+6N3EYEtKZ0gk0UxfbbEl4noSpJdc4ZAoSKfecrs3ernKxejQcH9?= =?utf-8?q?dnkLC0GHQw7Zoq9ji5PChEmT0R40nKfUhYNA9pZvyZvWCiarkgzkaidypz9nQ1xOr?= =?utf-8?q?3/RE19F0k/ame8lpo8H2xRnudNG/wbm69d/uh4rxBaGbEAEGf3V9StcwJGQ37uRSO?= =?utf-8?q?GZBFQl3btD/MHhc0ReMkwSF2ObYjJgJ4/FgEJ8PpgO1H6SLbAx9T6gI0KiyX8HAd4?= =?utf-8?q?GjzHc28tvkoM7/Wtu3/OQuoR9KrxIYUe+OP6et9xtcV1jyXNbJ6KjObSezXlQLJGf?= =?utf-8?q?qUEi9+/lxSpll7a7HpnsgK3LtOH6HdhDXe0AW3HEQH7GW3Mps9j6LwM++TeDmxlXu?= =?utf-8?q?qhQOhrnJg7rANDKycINm1AQczT5OWFEQHC6twQGa5Qx0k5gkf0UDDN9Pk9behhgmV?= =?utf-8?q?GWSfzVPM4fE6KONP5euhMp+X5qj927zENxLfrc034cIqDtVmuQkATAvF6L33qDQm+?= =?utf-8?q?0W/2SW3sgvph9luDfc9vPKd/h3focB7Q=3D=3D?= X-Forefront-Antispam-Report: CIP:131.228.6.101; CTRY:FI; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:fr712usmtp1.zeu.alcatel-lucent.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(36860700013)(376014)(82310400026)(7416014)(1800799024)(921020); DIR:OUT; SFP:1101; X-OriginatorOrg: nokia-bell-labs.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Jun 2025 19:37:59.2723 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 6d9601e9-0cd8-4904-96f5-08ddb0fb2101 X-MS-Exchange-CrossTenant-Id: 5d471751-9675-428d-917b-70f44f9630b0 X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5d471751-9675-428d-917b-70f44f9630b0; Ip=[131.228.6.101]; Helo=[fr712usmtp1.zeu.alcatel-lucent.com] X-MS-Exchange-CrossTenant-AuthSource: DB3PEPF0000885D.eurprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR07MB7432 From: Ilpo Järvinen 1) Don't early return when sack doesn't fit. AccECN code will be placed after this fragment so no early returns please. 2) Make sure opts->num_sack_blocks is not left undefined. E.g., tcp_current_mss() does not memset its opts struct to zero. AccECN code checks if SACK option is present and may even alter it to make room for AccECN option when many SACK blocks are present. Thus, num_sack_blocks needs to be always valid. Signed-off-by: Ilpo Järvinen Signed-off-by: Chia-Yu Chang --- v8: - Set opts->num_sack_blocks=0 to avoid potential undefined value --- net/ipv4/tcp_output.c | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c index 79ad69dfd9d6..37c981aa9bc6 100644 --- a/net/ipv4/tcp_output.c +++ b/net/ipv4/tcp_output.c @@ -1092,17 +1092,20 @@ static unsigned int tcp_established_options(struct sock *sk, struct sk_buff *skb eff_sacks = tp->rx_opt.num_sacks + tp->rx_opt.dsack; if (unlikely(eff_sacks)) { const unsigned int remaining = MAX_TCP_OPTION_SPACE - size; - if (unlikely(remaining < TCPOLEN_SACK_BASE_ALIGNED + - TCPOLEN_SACK_PERBLOCK)) - return size; - - opts->num_sack_blocks = - min_t(unsigned int, eff_sacks, - (remaining - TCPOLEN_SACK_BASE_ALIGNED) / - TCPOLEN_SACK_PERBLOCK); - - size += TCPOLEN_SACK_BASE_ALIGNED + - opts->num_sack_blocks * TCPOLEN_SACK_PERBLOCK; + if (likely(remaining >= TCPOLEN_SACK_BASE_ALIGNED + + TCPOLEN_SACK_PERBLOCK)) { + opts->num_sack_blocks = + min_t(unsigned int, eff_sacks, + (remaining - TCPOLEN_SACK_BASE_ALIGNED) / + TCPOLEN_SACK_PERBLOCK); + + size += TCPOLEN_SACK_BASE_ALIGNED + + opts->num_sack_blocks * TCPOLEN_SACK_PERBLOCK; + } else { + opts->num_sack_blocks = 0; + } + } else { + opts->num_sack_blocks = 0; } if (unlikely(BPF_SOCK_OPS_TEST_FLAG(tp,