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 A08D545625 for ; Mon, 15 Jul 2024 14:13:39 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 2A9534067B; Mon, 15 Jul 2024 14:13:36 +0200 (CEST) Received: from NAM11-BN8-obe.outbound.protection.outlook.com (mail-bn8nam11on2089.outbound.protection.outlook.com [40.107.236.89]) by mails.dpdk.org (Postfix) with ESMTP id 107B54027E; Mon, 15 Jul 2024 14:13:32 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=e75HWyJzF75m4zbUMxmob+XUZy2ZBnMWpPthFcNPa5qH6QYv7LkFxESvNDimoY0BfOl6q74a2IjSX0TTsk9ka2Y8pqmvqc6esqLofa9hJkSfWh6TwmdR7wjsKC21mWw/xMEcrmrGuJ3Ym/+F1LNdHBmH2Sox1kBQApCQevr0AZxV5/e1TzSoArvDe4Iz65Rw9crMg2iutfbCH/qlmi+o0j/hh0EklIVPYztBf1/EWjSEVsEyZAaTUGJIouobef2xtXbJkr7Zt+DgYwtMb5bJApbwg5V9Fid3G0iJM2nQ6N9sGbyQCfVROAhwHoJzG4GmwV+knSLadbp0FlAJSqi5Og== 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=9GfCat6+zP4B2zX+RfgplxGM/siNUjsezlezaLSPa+0=; b=jQh15VZ+q9biQaa+dU9QnBNCIx61SzOniTq8DdpnzT176VrgDWoMwaJOMvPf1XTMDxTN6JwEz+yRlYWzQ+BGDuvP/JxUI/HHVXzRAEoLbniyEGykPS42xpTDgTRzT0x2zbYFi333WDxzuUKq4w6dWZZjv/P3HJUVR6SKjbFAb6wROll9H695zYPYCnQQxZz8EWZ9s2iwDur1DcO/2Yqj9QsE+EEfEuz94bHHwZhidMDnOU3zOYDfFXzxaxetO5tGH557RsUta1L/nb2si9kmhM4vQfJHx5sXcahUyWW9mXbvqLRTIbJVG4SwAqD8QT3FyFulQEyEjBFcDcN8OpY64g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.118.233) smtp.rcpttodomain=dpdk.org smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none (0) 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=9GfCat6+zP4B2zX+RfgplxGM/siNUjsezlezaLSPa+0=; b=a6dGd9+tKp+ykGkWqpUwnUVVRc1hMfmgzhTef8XN+riR2W6n9D6J/rYpwNGdnVMkjR2zsRy5LAbQR8X9EJyqPPw4n15ygov9QgOiRR76Ssv4F+JWuYFS9oB3nHUiHlIHYtkS/REjhA2zybZ1f5hHn8j1wn8TsAPO6eg3B85IKZCqBF9Nqna57Vj7foH+e55KgUwXfJyjL5VAIzTSqGqlsz0Uqx7KAHK0i3arjQ7v5sqaXUmUgJdfVdnKG3GFegzYV9mzR1+I/uyf5JOK+1LHr4JXr14azwkDVxHkcuBF94oJxHWSOTxf0YfJx0x0qkNfQDJSbvwo+U53noMIQoiVAQ== Received: from BLAPR03CA0037.namprd03.prod.outlook.com (2603:10b6:208:32d::12) by CY8PR12MB7610.namprd12.prod.outlook.com (2603:10b6:930:9a::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7762.28; Mon, 15 Jul 2024 12:13:30 +0000 Received: from BL6PEPF00022575.namprd02.prod.outlook.com (2603:10b6:208:32d:cafe::8d) by BLAPR03CA0037.outlook.office365.com (2603:10b6:208:32d::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7762.28 via Frontend Transport; Mon, 15 Jul 2024 12:13:29 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.118.233) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.118.233 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.118.233; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.118.233) by BL6PEPF00022575.mail.protection.outlook.com (10.167.249.43) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7784.11 via Frontend Transport; Mon, 15 Jul 2024 12:13:29 +0000 Received: from drhqmail201.nvidia.com (10.126.190.180) by mail.nvidia.com (10.127.129.6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.4; Mon, 15 Jul 2024 05:13:22 -0700 Received: from drhqmail201.nvidia.com (10.126.190.180) by drhqmail201.nvidia.com (10.126.190.180) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.4; Mon, 15 Jul 2024 05:13:22 -0700 Received: from nvidia.com (10.127.8.9) by mail.nvidia.com (10.126.190.180) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.4 via Frontend Transport; Mon, 15 Jul 2024 05:13:20 -0700 From: Michael Baum To: CC: Dariusz Sosnowski , Thomas Monjalon , Ferruh Yigit , Ori Kam , Subject: [PATCH] ethdev: fix GENEVE option item conversion Date: Mon, 15 Jul 2024 15:13:16 +0300 Message-ID: <20240715121316.3429593-1-michaelba@nvidia.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-NV-OnPremToCloud: ExternallySecured X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL6PEPF00022575:EE_|CY8PR12MB7610:EE_ X-MS-Office365-Filtering-Correlation-Id: d448a60a-ee94-4079-dc40-08dca4c78999 X-LD-Processed: 43083d15-7273-40c1-b7db-39efd9ccc17a,ExtAddr X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|82310400026|1800799024|36860700013|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?JvUfqU1DYbhYlmuhbvc9wOBf6Z1uprYpoqZkYDsqDuud9n0UaxpGsdtJFSm5?= =?us-ascii?Q?ULmDB81eblRUgWDVwDjesQ4z50CF98csynd7K2UXV5WF4QoTrWBzZ/zFpiTv?= =?us-ascii?Q?AL8keabuerDAYjqUUMV3krpXgc7AVdLTISXfO4vNoFcAsYFyf15MfrflTHjk?= =?us-ascii?Q?d9g3Lf/ke5WWDSjym5z5Dq9MYgdit73uHjSKheUpHknrOfKUY7ZW8f/9e4En?= =?us-ascii?Q?0lQbw2UVvG3Um4Hb9/u6qS6qBfl/FY3hANN8oV3sE00O4ZcQfldvkp8rhGfX?= =?us-ascii?Q?oCTGpCbUCT5VYQ43rTrCoHmK5eXyrOebUQmoI280o0Jl52rDpkiY9Q7PhgYN?= =?us-ascii?Q?TJFw9rmetyLfqNQP7cCHYhGwu8pwaL4jhSiKoktBQb7VnZnACn0c1BIlYpbD?= =?us-ascii?Q?oIE1qdmY8CTOYZxtVHrU/hnFm4kVxR38olZRpIw2f+vuv11bCwQBpVDP08ml?= =?us-ascii?Q?x9SCnS6R8PEbswdjXs4AnkvvDLZzoUrNgMBA01wh4m5ia7DZ+Y1DNiDgq/Lj?= =?us-ascii?Q?72TDWuaYxkFS5FUIqeZ/uMLLhay4j0kAJPpciziJDrp7vo1j8sG8Qf0S1PCi?= =?us-ascii?Q?uWc5E7jqLNoJTvUjCmEAKJNJNZcv7n/gWgXoLj2F1z2ip8YwYUGO0MQ4bW2F?= =?us-ascii?Q?NcJQe929ZLuVd1HnDdwWwmjRDs5xVfQjcHY3EUvH3X29Z6LiV4+CNB1GR8SH?= =?us-ascii?Q?IgNyf3zv8s0aB49Ar7Yq4WloTL20FeQiAtTdyblOXHrRp9GRibj7yZXwinwu?= =?us-ascii?Q?l7fTf+2J9X6P0R+LHTwek/CqqnAZRdeQ00B5R6BTO6oqlCFA4eK86fAfIEKV?= =?us-ascii?Q?KB7HD0d6AQTnCC5D1aEvvXdYozuMR4ykkRusKgZLZcbqkbjC9AaQJkwXNQmg?= =?us-ascii?Q?W4rlB41OVy1U7rdevBn2Z7ub+pZuaMy/+KmIiukWm9dkee7eQUYczwaZZTU4?= =?us-ascii?Q?0t0Kk1rIn5U+/qw7Q7oY88R6OSYSF/VFNbMIHUJ+lvrHkbXgrLrp+jy6SvCa?= =?us-ascii?Q?pSvBtm9vZsJLxzuONdkOUy/P9PGK0lIPCdjRwTuNvnrnu5D9Ha6yTDWgjLm2?= =?us-ascii?Q?bZ9v6lkyjcFDn5qqtw4NG87cUKI9mbipiRLMbhTVoSUkMoVwK2NJT1Jh90PB?= =?us-ascii?Q?9q7E5EHTZlhVES0UDHYLPqdDZf6C3f4w7FYUySO7MAaI1vcxBgsmwJFkhnNK?= =?us-ascii?Q?PSXUZfJFwcKYqgJ0mkKfq3TJm1QGosoPhUhBqArulCLCmtGLqKqfVn13/BDJ?= =?us-ascii?Q?cOUNmSi0vJmq56Gn1qeyctcb1tJGnQJPN0riYWBlzQDZAsa7Q+o3iOJsXOB0?= =?us-ascii?Q?6Yk16SimqNyXCQAHO4tmyoCOuaNhD0q8G3XwOhEkfLn8QNzevIrc/o91BC/q?= =?us-ascii?Q?PuTxIEeNV1zNCml2JINlYTVZKF1VDzZoupR2pWmgQh5GYQ2fPcRDcWuwklH6?= =?us-ascii?Q?zMDmIGXQgtqIVz1GoFDSoZvlTqLDo8g2?= X-Forefront-Antispam-Report: CIP:216.228.118.233; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:dc7edge2.nvidia.com; CAT:NONE; SFS:(13230040)(82310400026)(1800799024)(36860700013)(376014); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Jul 2024 12:13:29.1901 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: d448a60a-ee94-4079-dc40-08dca4c78999 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a; Ip=[216.228.118.233]; Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: BL6PEPF00022575.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY8PR12MB7610 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 The "rte_flow_conv()" function, enables, among other things, to copy item list. For GENEVE option item, the function copies it without considering deep copy. It copies the "data" pointer without copying the pointed values. This patch adds deep copy for after regular copy. Fixes: 2b4c72b4d10d ("ethdev: introduce GENEVE header TLV option item") Cc: stable@dpdk.org Signed-off-by: Michael Baum --- lib/ethdev/rte_flow.c | 29 +++++++++++++++++++++++++---- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/lib/ethdev/rte_flow.c b/lib/ethdev/rte_flow.c index ca2f85c3fa..4076ae4ee1 100644 --- a/lib/ethdev/rte_flow.c +++ b/lib/ethdev/rte_flow.c @@ -623,6 +623,7 @@ rte_flow_conv_item_spec(void *buf, const size_t size, switch (item->type) { union { const struct rte_flow_item_raw *raw; + const struct rte_flow_item_geneve_opt *geneve_opt; } spec; union { const struct rte_flow_item_raw *raw; @@ -632,10 +633,13 @@ rte_flow_conv_item_spec(void *buf, const size_t size, } mask; union { const struct rte_flow_item_raw *raw; + const struct rte_flow_item_geneve_opt *geneve_opt; } src; union { struct rte_flow_item_raw *raw; + struct rte_flow_item_geneve_opt *geneve_opt; } dst; + void *deep_src; size_t tmp; case RTE_FLOW_ITEM_TYPE_RAW: @@ -664,13 +668,30 @@ rte_flow_conv_item_spec(void *buf, const size_t size, tmp = last.raw->length & mask.raw->length; if (tmp) { off = RTE_ALIGN_CEIL(off, sizeof(*dst.raw->pattern)); - if (size >= off + tmp) - dst.raw->pattern = rte_memcpy - ((void *)((uintptr_t)dst.raw + off), - src.raw->pattern, tmp); + if (size >= off + tmp) { + deep_src = (void *)((uintptr_t)dst.raw + off); + dst.raw->pattern = rte_memcpy(deep_src, + src.raw->pattern, + tmp); + } off += tmp; } break; + case RTE_FLOW_ITEM_TYPE_GENEVE_OPT: + off = rte_flow_conv_copy(buf, data, size, + rte_flow_desc_item, item->type); + spec.geneve_opt = item->spec; + src.geneve_opt = data; + dst.geneve_opt = buf; + tmp = spec.geneve_opt->option_len << 2; + if (size > 0 && src.geneve_opt->data) { + deep_src = (void *)((uintptr_t)(dst.geneve_opt + 1)); + dst.geneve_opt->data = rte_memcpy(deep_src, + src.geneve_opt->data, + tmp); + } + off += tmp; + break; default: off = rte_flow_conv_copy(buf, data, size, rte_flow_desc_item, item->type); -- 2.25.1