From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 38A2FA0A0E for ; Mon, 10 May 2021 18:23:53 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 323714003E; Mon, 10 May 2021 18:23:53 +0200 (CEST) Received: from NAM12-BN8-obe.outbound.protection.outlook.com (mail-bn8nam12on2040.outbound.protection.outlook.com [40.107.237.40]) by mails.dpdk.org (Postfix) with ESMTP id 6E55F4003E for ; Mon, 10 May 2021 18:23:52 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ngfCpL9Tr1kPqnnOYZzIjgTLzVSNkbYSVTNkKAFrmf4dMCU1hf63HO5s+5VcRPjBnoGiPBGow7vqG131mRMjexOEgKFlKRmC1T47n+5KJtenHD1AzHQfNsfy9n7uTOcvktuTglji05f+A8x7qqMR2nnPHbJ8t/L9rpz4ej9giWK++C9i/7w9TOn/F/Y5ECoO7hSII11ml2hzXUP2J1ufTuDrpJ7CWNxvYQXCzDxKvukTvXCBdw54TX2+vqpaT2s8zb3XAyaOc0sb8rGjplZ9FUQZ+ndCl1AuQPAJtlDvsKk7H1+KsKNC9eFpQusa6LBkGTBEojJbRE2lh2jtOcN1zQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=HKkX3QV4rKT97BhD2GLjumELa4IZWKsFWs3QMobONCg=; b=di9rScx8zVr3wakFg3yLMQi3BVgeNu4i8V+IFhRzMnaMKRH/893QR1OZJ5tC6joIHtY0cWlWMV3UhLbOSkTidcgfXmt4AZiQ8GA4P1JEYFRtNfril5Lzh3KwyikbV1qqdVOLTDF1kEJQWXoTsNJAvcjeom4Q8PZr/dO7bvcv+vBtYUPChBXO//ZooV4lPgLLAJe+tVD6yo2emWRi30pbbJa1nj6GLjQ/mPO7q4wsi6SXNzO6m9MrDRiF34drj8kIdHcf0g5NAMoG9vjWB0uZJb4fH1vGjwBD9XRRz1ETusEN+iqNRYBXuquQ5D9XUA70i2jUd9xfJ5naUbgeI0Axlg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.112.34) smtp.rcpttodomain=intel.com smtp.mailfrom=nvidia.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=HKkX3QV4rKT97BhD2GLjumELa4IZWKsFWs3QMobONCg=; b=ALv/kbYsQDbH6VyT7bB36u0bDMGA6zoJKfpvM+uYH1E5aBfp+Zd4LwWXxAYHBbxliH1oOyXYUUobm0NNa1kiNOd/99sLLUqNBmoYF5qlg38P6DZXumIWhFQlwXUXARewZkWAVHVZqorU7C/+Ao8SDVLL/ILHVnuTkzBF/K/LbpdIHkDDVgzGlVwGnHMyBx/4YECz6UJ/kaTROmr5Hfc9iZnCPB2nJ4rWdlqPuu1MBB950Vq1m8i1sVc+aUDKYB9ws8AlvABqxrqVeS1vmsC6weK+OvV/Jm3E9R1a/8kQFUE/hv9eKzt5XJLXjJSoJRuc9roU4lyVvRYbhZXO6NS90Q== Received: from BN9PR03CA0396.namprd03.prod.outlook.com (2603:10b6:408:111::11) by BN8PR12MB4594.namprd12.prod.outlook.com (2603:10b6:408:a2::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4108.26; Mon, 10 May 2021 16:23:50 +0000 Received: from BN8NAM11FT020.eop-nam11.prod.protection.outlook.com (2603:10b6:408:111:cafe::b9) by BN9PR03CA0396.outlook.office365.com (2603:10b6:408:111::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4108.25 via Frontend Transport; Mon, 10 May 2021 16:23:50 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.112.34) smtp.mailfrom=nvidia.com; intel.com; dkim=none (message not signed) header.d=none;intel.com; dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.112.34 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.112.34; helo=mail.nvidia.com; Received: from mail.nvidia.com (216.228.112.34) by BN8NAM11FT020.mail.protection.outlook.com (10.13.176.223) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.4108.25 via Frontend Transport; Mon, 10 May 2021 16:23:50 +0000 Received: from nvidia.com (172.20.145.6) by HQMAIL107.nvidia.com (172.20.187.13) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Mon, 10 May 2021 16:23:47 +0000 From: Xueming Li To: Pu Xu <583493798@qq.com> CC: Luca Boccassi , Konstantin Ananyev , dpdk stable Date: Tue, 11 May 2021 00:02:35 +0800 Message-ID: <20210510160258.30982-206-xuemingl@nvidia.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210510160258.30982-1-xuemingl@nvidia.com> References: <20210510160258.30982-1-xuemingl@nvidia.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-Originating-IP: [172.20.145.6] X-ClientProxiedBy: HQMAIL111.nvidia.com (172.20.187.18) To HQMAIL107.nvidia.com (172.20.187.13) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 7aa9adad-81eb-4df8-d5ad-08d913cffec6 X-MS-TrafficTypeDiagnostic: BN8PR12MB4594: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:10000; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: ZQSQz+3fe/yt5lCPnl5BmpR640fKaRVWPyfJz3E3fnwF4U8E4qg4UGxMGbnZOihK0AhiOPMWi2qRqPXSBqIvvFTmMDFb2TgTaDbabt4UtWPWXf+Sg4bgOhPWsBPM6Vz3gLJ2AEQDlxKW6HHHZM+aUXUW01aqpGQh9o4I0P4Olo38anvdzGNQnDFK1i05q5s2uPh7v1XiRgWqeRyyz5PdXRyUXgkVnVHxFOFPIvbnWlP+Tqz35OeyLNlrZOcEwsY2uijnNzFSvH+n6MLD7yVW8XZOytYbJVbPswTgTXM+EfKYyDc8IEqgRH8Q03Z1EPFsQQZXBbZJTerXQ4cbTK3BjJzBYl2YtQu7KANABxMsBqZzvjb+TzUdP6DsYfkTsFqnX/1KkmE8zcySTMD1TZho3W0NMB/AllchDrfjhTb1fJ2K1L80nIAow4y827aSWo43zgYsScLvrE/KtOy2ZaLYuNPJ13E7vBgckWBE8xSuZRva9tm3DiSBvn6juMuQwg8fszpH6MjRGtPYe2owoobOIWvVRTRsDjeYIZ48dFnfh4qxGQYnr3nIoZTJ36K5f5m+hRXzLTStJ3aag6MyzPtkF7Qr4DP6QJPa7Z0PLf++fky424vuRd0bEs6I03r2VcrioJMmuFAlQySZKEfZeKNstqFeUDRLux5kZzoIxaL5EPRWMoGNNKCxHD/M3utBLm2XmCMldS3KDMAsuG/nKOqFN+lT+UD9n52+C0HOM0I/8VTbAuc4bftzaEuV9NG7cRGognVD/lIKTMjhKJI36pdUOw== X-Forefront-Antispam-Report: CIP:216.228.112.34; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:schybrid03.nvidia.com; CAT:NONE; SFS:(4636009)(346002)(39860400002)(376002)(136003)(396003)(46966006)(36840700001)(55016002)(8676002)(83380400001)(36756003)(316002)(478600001)(36906005)(5660300002)(7696005)(2906002)(54906003)(70206006)(86362001)(82310400003)(70586007)(8936002)(53546011)(7636003)(16526019)(426003)(36860700001)(6286002)(82740400003)(4326008)(336012)(966005)(6666004)(26005)(6916009)(186003)(356005)(2616005)(1076003)(47076005); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 May 2021 16:23:50.1468 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 7aa9adad-81eb-4df8-d5ad-08d913cffec6 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a; Ip=[216.228.112.34]; Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: BN8NAM11FT020.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN8PR12MB4594 Subject: [dpdk-stable] patch 'ip_frag: fix fragmenting IPv4 packet with header option' has been queued to stable release 20.11.2 X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: stable-bounces@dpdk.org Sender: "stable" Hi, FYI, your patch has been queued to stable release 20.11.2 Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet. It will be pushed if I get no objections before 05/12/21. So please shout if anyone has objections. Also note that after the patch there's a diff of the upstream commit vs the patch applied to the branch. This will indicate if there was any rebasing needed to apply to the stable branch. If there were code changes for rebasing (ie: not only metadata diffs), please double check that the rebase was correctly done. Queued patches are on a temporary branch at: https://github.com/steevenlee/dpdk This queued commit can be viewed at: https://github.com/steevenlee/dpdk/commit/9ffa1fee2705937cc6259d2e15f5f10840eec68b Thanks. Xueming Li --- >From 9ffa1fee2705937cc6259d2e15f5f10840eec68b Mon Sep 17 00:00:00 2001 From: Pu Xu <583493798@qq.com> Date: Thu, 25 Mar 2021 19:11:30 +0800 Subject: [PATCH] ip_frag: fix fragmenting IPv4 packet with header option Cc: Luca Boccassi [ upstream commit 1edf7a796ddc6b8b642153f0a434a3e44e2d4fe3 ] When fragmenting IPv4 packet, the data offset should be calculated through the IHL field in IP header rather than using sizeof(struct rte_ipv4_hdr). Fixes: 4c38e5532a07 ("ip_frag: refactor IPv4 fragmentation into a proper library") Signed-off-by: Pu Xu <583493798@qq.com> Acked-by: Konstantin Ananyev --- lib/librte_ip_frag/rte_ipv4_fragmentation.c | 34 +++++++++++++-------- 1 file changed, 21 insertions(+), 13 deletions(-) diff --git a/lib/librte_ip_frag/rte_ipv4_fragmentation.c b/lib/librte_ip_frag/rte_ipv4_fragmentation.c index e9de335ae2..2e7739d027 100644 --- a/lib/librte_ip_frag/rte_ipv4_fragmentation.c +++ b/lib/librte_ip_frag/rte_ipv4_fragmentation.c @@ -23,10 +23,10 @@ #define IPV4_HDR_FO_ALIGN (1 << RTE_IPV4_HDR_FO_SHIFT) static inline void __fill_ipv4hdr_frag(struct rte_ipv4_hdr *dst, - const struct rte_ipv4_hdr *src, uint16_t len, uint16_t fofs, - uint16_t dofs, uint32_t mf) + const struct rte_ipv4_hdr *src, uint16_t header_len, + uint16_t len, uint16_t fofs, uint16_t dofs, uint32_t mf) { - rte_memcpy(dst, src, sizeof(*dst)); + rte_memcpy(dst, src, header_len); fofs = (uint16_t)(fofs + (dofs >> RTE_IPV4_HDR_FO_SHIFT)); fofs = (uint16_t)(fofs | mf << RTE_IPV4_HDR_MF_SHIFT); dst->fragment_offset = rte_cpu_to_be_16(fofs); @@ -74,7 +74,7 @@ rte_ipv4_fragment_packet(struct rte_mbuf *pkt_in, struct rte_ipv4_hdr *in_hdr; uint32_t out_pkt_pos, in_seg_data_pos; uint32_t more_in_segs; - uint16_t fragment_offset, flag_offset, frag_size; + uint16_t fragment_offset, flag_offset, frag_size, header_len; uint16_t frag_bytes_remaining; /* @@ -86,14 +86,22 @@ rte_ipv4_fragment_packet(struct rte_mbuf *pkt_in, unlikely(mtu_size < RTE_ETHER_MIN_MTU)) return -EINVAL; + in_hdr = rte_pktmbuf_mtod(pkt_in, struct rte_ipv4_hdr *); + header_len = (in_hdr->version_ihl & RTE_IPV4_HDR_IHL_MASK) * + RTE_IPV4_IHL_MULTIPLIER; + + /* Check IP header length */ + if (unlikely(pkt_in->data_len < header_len) || + unlikely(mtu_size < header_len)) + return -EINVAL; + /* * Ensure the IP payload length of all fragments is aligned to a * multiple of 8 bytes as per RFC791 section 2.3. */ - frag_size = RTE_ALIGN_FLOOR((mtu_size - sizeof(struct rte_ipv4_hdr)), + frag_size = RTE_ALIGN_FLOOR((mtu_size - header_len), IPV4_HDR_FO_ALIGN); - in_hdr = rte_pktmbuf_mtod(pkt_in, struct rte_ipv4_hdr *); flag_offset = rte_cpu_to_be_16(in_hdr->fragment_offset); /* If Don't Fragment flag is set */ @@ -102,11 +110,11 @@ rte_ipv4_fragment_packet(struct rte_mbuf *pkt_in, /* Check that pkts_out is big enough to hold all fragments */ if (unlikely(frag_size * nb_pkts_out < - (uint16_t)(pkt_in->pkt_len - sizeof(struct rte_ipv4_hdr)))) + (uint16_t)(pkt_in->pkt_len - header_len))) return -EINVAL; in_seg = pkt_in; - in_seg_data_pos = sizeof(struct rte_ipv4_hdr); + in_seg_data_pos = header_len; out_pkt_pos = 0; fragment_offset = 0; @@ -124,8 +132,8 @@ rte_ipv4_fragment_packet(struct rte_mbuf *pkt_in, } /* Reserve space for the IP header that will be built later */ - out_pkt->data_len = sizeof(struct rte_ipv4_hdr); - out_pkt->pkt_len = sizeof(struct rte_ipv4_hdr); + out_pkt->data_len = header_len; + out_pkt->pkt_len = header_len; frag_bytes_remaining = frag_size; out_seg_prev = out_pkt; @@ -176,14 +184,14 @@ rte_ipv4_fragment_packet(struct rte_mbuf *pkt_in, out_hdr = rte_pktmbuf_mtod(out_pkt, struct rte_ipv4_hdr *); - __fill_ipv4hdr_frag(out_hdr, in_hdr, + __fill_ipv4hdr_frag(out_hdr, in_hdr, header_len, (uint16_t)out_pkt->pkt_len, flag_offset, fragment_offset, more_in_segs); fragment_offset = (uint16_t)(fragment_offset + - out_pkt->pkt_len - sizeof(struct rte_ipv4_hdr)); + out_pkt->pkt_len - header_len); - out_pkt->l3_len = sizeof(struct rte_ipv4_hdr); + out_pkt->l3_len = header_len; /* Write the fragment to the output list */ pkts_out[out_pkt_pos] = out_pkt; -- 2.25.1 --- Diff of the applied patch vs upstream commit (please double-check if non-empty: --- --- - 2021-05-10 23:59:31.898430100 +0800 +++ 0207-ip_frag-fix-fragmenting-IPv4-packet-with-header-opti.patch 2021-05-10 23:59:26.670000000 +0800 @@ -1 +1 @@ -From 1edf7a796ddc6b8b642153f0a434a3e44e2d4fe3 Mon Sep 17 00:00:00 2001 +From 9ffa1fee2705937cc6259d2e15f5f10840eec68b Mon Sep 17 00:00:00 2001 @@ -4,0 +5,3 @@ +Cc: Luca Boccassi + +[ upstream commit 1edf7a796ddc6b8b642153f0a434a3e44e2d4fe3 ] @@ -10 +12,0 @@ -Cc: stable@dpdk.org @@ -15 +17 @@ - lib/ip_frag/rte_ipv4_fragmentation.c | 34 +++++++++++++++++----------- + lib/librte_ip_frag/rte_ipv4_fragmentation.c | 34 +++++++++++++-------- @@ -18 +20 @@ -diff --git a/lib/ip_frag/rte_ipv4_fragmentation.c b/lib/ip_frag/rte_ipv4_fragmentation.c +diff --git a/lib/librte_ip_frag/rte_ipv4_fragmentation.c b/lib/librte_ip_frag/rte_ipv4_fragmentation.c @@ -20,2 +22,2 @@ ---- a/lib/ip_frag/rte_ipv4_fragmentation.c -+++ b/lib/ip_frag/rte_ipv4_fragmentation.c +--- a/lib/librte_ip_frag/rte_ipv4_fragmentation.c ++++ b/lib/librte_ip_frag/rte_ipv4_fragmentation.c