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 4868E48B3E for ; Tue, 18 Nov 2025 10:59:38 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 3FD2F40150; Tue, 18 Nov 2025 10:59:38 +0100 (CET) Received: from BN1PR04CU002.outbound.protection.outlook.com (mail-eastus2azon11010035.outbound.protection.outlook.com [52.101.56.35]) by mails.dpdk.org (Postfix) with ESMTP id 2983240150 for ; Tue, 18 Nov 2025 10:59:36 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=CNXU9wP1OFvSutXYoCB5siXF5f37icR2RwpObzmj+/9v8sLGHML5jFg2xYrykz/A6XkOjAp1MnrglsOKwgZaYnrvxF/KbRjeF+8Ihw5e9vmpj2FR/gay57xN1VMJudqdmGq/PUPb0pRlkt20RnXhQJrjHHa99zAHKBu3LEna/YqLxPyqNH1bPjuEzVbpWOBrGf7HjCUyoGeI9DsoFsfsW2ZhBM8smrucXMc+Kbbu1GULdFSgZRMwBQB9C5RgjFSPagL6GGvYJOrbxnKrft1diWuFxtHC/QMU3Tpe7aEbBU6rdqfhHLlur0QZbVlsuL9P88Lc0nshXD85gmYtjUJ+vQ== 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=sJbxUKCWWwUp90rtISKHAk5c3kzIW1QuX866mwYfaIU=; b=Tqz/5TNm8ppTuKDIRS2Pv6VKvj8bBHGmBUgnbOXCtuPuFsCIw6qxuhqEc/UKNoYsD/NIUgYRt36m05pAa7GuY1x/V0p7ezckczPdCYmjk/N2J1oVzmuzLsJX9rQt05lI+01Xyxqq3wYeslieUF+v6ljt2ERXU7LGiaRvtT7m/1qQFCRBuGKJ4ykKfNz0HpvaQFNYiPHJCirbOTxpvR++17/DjRXxbbLJs2mZ8Ya2co2BU+lXJXYspuZXOo2CD0V2n+1Hu1EiAbTiy1+ZbaC8A0khbQTNOWG+GFm/FRyK0mv738FGdPeqWZdjjhOB7VeFW7Y7O8r6/fD1I5u54xgHLw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.161) 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=sJbxUKCWWwUp90rtISKHAk5c3kzIW1QuX866mwYfaIU=; b=dvDdTApCpUKISB6dvyQnKxIVyjWF1bLHb+SSmqaNUVHny0OGWKxwPtSnYu2uCRshLdLxYCVdbE7sTfHt1MrVdmbA3ntNNjFwFFMv/FzPXN2ivx8Y8WPzHVavrlbNGMZ8kVhpL2GfWfYoB6ktW799lV7zv96gIwkOWTF4rdmJeC1rq6nN9MK7Kpe9IMyfK3sRYxEl+JVzdMIfkWlWFhYFIrq+muRJdmvusuNz0R2Crb0G4ulwOYkRCdm38RKdgkv2qMmjDwm8owAUUa+EAzpjzlnShhN7C9PrbeahajMrPaHf8tZmU96F42jsQBw2NMoOc0+Z22qBnKY1v0pusZYTnA== Received: from BY5PR20CA0002.namprd20.prod.outlook.com (2603:10b6:a03:1f4::15) by PH7PR12MB7308.namprd12.prod.outlook.com (2603:10b6:510:20c::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9320.22; Tue, 18 Nov 2025 09:59:30 +0000 Received: from SJ1PEPF000023D2.namprd02.prod.outlook.com (2603:10b6:a03:1f4:cafe::13) by BY5PR20CA0002.outlook.office365.com (2603:10b6:a03:1f4::15) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9343.10 via Frontend Transport; Tue, 18 Nov 2025 09:59:30 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.117.161) 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.117.161 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.117.161; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.117.161) by SJ1PEPF000023D2.mail.protection.outlook.com (10.167.244.9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9343.9 via Frontend Transport; Tue, 18 Nov 2025 09:59:30 +0000 Received: from rnnvmail201.nvidia.com (10.129.68.8) by mail.nvidia.com (10.129.200.67) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Tue, 18 Nov 2025 01:59:15 -0800 Received: from nvidia.com (10.126.231.35) by rnnvmail201.nvidia.com (10.129.68.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Tue, 18 Nov 2025 01:59:13 -0800 From: Gregory Etelson To: CC: , , , Dariusz Sosnowski Subject: [PATCH 22.11 v2] net/mlx5: fix external queues access Date: Tue, 18 Nov 2025 11:59:00 +0200 Message-ID: <20251118095900.463243-1-getelson@nvidia.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20251118095406.461826-1-getelson@nvidia.com> References: <20251118095406.461826-1-getelson@nvidia.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-Originating-IP: [10.126.231.35] X-ClientProxiedBy: rnnvmail203.nvidia.com (10.129.68.9) To rnnvmail201.nvidia.com (10.129.68.8) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ1PEPF000023D2:EE_|PH7PR12MB7308:EE_ X-MS-Office365-Filtering-Correlation-Id: 40bf238a-9628-42b0-9c0c-08de26892ac0 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|82310400026|1800799024|36860700013|376014|7053199007; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?WJw5yT082RZmhu7mK4cDcFvjjMd2D6DLFJLdjLGnZHa9uYGdDN1DD+h510Zp?= =?us-ascii?Q?OImSldQSSKCpHonQc8od2fyl91f7yHS9t/qwBgws6Vb+bdn6hR6OK5ob/IqE?= =?us-ascii?Q?TYyYY2E6jQ+/Ot/LLDIoY32FIW+rxZGchkgpGXHrj4Sf8pk/GgOG3HL+HMW3?= =?us-ascii?Q?CNcbhDWFfIi+RjBMHAJDCjovc+nlEHhbTyKCta+xZt15LlW4ZNI8kgzDa1Rr?= =?us-ascii?Q?EGm7kSvA//FeW9o0+wlCj3ie1tvPZJX27IPx8FPRMfmsB8ZByRAyQjjlXvRA?= =?us-ascii?Q?2PRWM6PpyDs+e+ShY/gPUke9biqMLzPAs+t723M2l7gl+6wNLAsTatZZxGkh?= =?us-ascii?Q?ZnBfcoaL2mJEvTR2ZgD4mP3HtIN9SWLuuQ5N+CGxCz/JgFPVO4GzOKwovpoZ?= =?us-ascii?Q?rPCrzeXDB+e8MsmdVCyksBHqoIojf2jkiVJpD2tgqi7XpeDNeCbfYGvzl11Y?= =?us-ascii?Q?jK528dKGBp+RJUG3tYzVs7pV7ehAcWPEmQA1zBK9/+g1VetxN9NgzgGNKcEA?= =?us-ascii?Q?vjz2jV9S45otgPVK1LA8/cWdfw/K+TuhzepUjN4gSH6K1S+X4wn1K5Hhuxc3?= =?us-ascii?Q?Man0HbP90h4UDM6v1Gw+DJ1mnlOy2WRdgWlj1S/jIPWIrh3Z51OtNaPfreSP?= =?us-ascii?Q?aH4MBDbJOgjyQDn2IXsXinH5kyaPB1qHPYkIr/kGMTO/ajBeG1IO2JnI3G42?= =?us-ascii?Q?N95yh+/EwVeP2qzf3aSiatAbw5G8ox8znxlvMMvzHblERwmhA6fMjKwlS90Q?= =?us-ascii?Q?Er2fR5KOAygazO5wIhzE/DlUYwDK7Fs5GiJFiARVtmWb49rBpw/IVezB0mhi?= =?us-ascii?Q?dNaR6U/YlXKh0WRAtR6DEsULJYM992Xyh+TDOW+HK+WWC8eM3spJT2kC5qs6?= =?us-ascii?Q?dUEx/xYb3obPOOX1oH/W+u9kdRGB6459aTW17Dvz6ZN6KZeKvcw+tyWnISAU?= =?us-ascii?Q?mpEWqEk9LfanRrtMVK5z9heEqhwq7hG9BlOSAVqJmSiJfAp71jlKTN87FRs2?= =?us-ascii?Q?lzyFI1p/Z+yVTEODDrKuWpINHrn08nyIEOMJugoG8KMcna6AOreSjzaWvp45?= =?us-ascii?Q?yi4wRCHcgDKi6qpI4gBBsG7WOhF1bsE6j2nUsv+j0yaM41iBZbzPh3usqUXR?= =?us-ascii?Q?zKMd0mIpqY4kiSBeIPh/1FtjCKE9talYcb7viZKa+tGhqS8bzEEkpNPk17qy?= =?us-ascii?Q?hoeFPxTUXZrhrQOw5i5jYV6a2SkuhGV8QHU+v53dn56Vg1ePvq+aHfN81vsF?= =?us-ascii?Q?4i2g+hqlo6lul3pU9egHo30Fw1GyCwgTawolG3JGyOyC4AcvcEf+3fsvSONx?= =?us-ascii?Q?40WnTrPiUTZ0tcTTt3DeHYM+OVzP2MOugo4DYVHTJ0fpR0XwA5SFCOLlBAm4?= =?us-ascii?Q?4KKKiBlk204mABc/BtFyO8E1qvdgLFd87mWPOSnCqIW7Dv1wBDpOK7psU6Gf?= =?us-ascii?Q?2PkCghMOEzYqqqZ4Wo6i0ochH6pz5oDvnK5bgeTllQmQBpyyKOZNwmts2fPo?= =?us-ascii?Q?IXMx8WGdEilgvoshFpl1KChJur4W3NKKCRM44+KFbCclyMxCmI3mPWKqP++h?= =?us-ascii?Q?t3r2UyML8KZ5qHaJhpc=3D?= X-Forefront-Antispam-Report: CIP:216.228.117.161; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:dc6edge2.nvidia.com; CAT:NONE; SFS:(13230040)(82310400026)(1800799024)(36860700013)(376014)(7053199007); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Nov 2025 09:59:30.1392 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 40bf238a-9628-42b0-9c0c-08de26892ac0 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a; Ip=[216.228.117.161]; Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: SJ1PEPF000023D2.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR12MB7308 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 [ upstream commit d524b58819b46ea47d02338204d24c2f2ba29ee2 ] mlx5_ext_rxq_get() did not return NULL value if query index was not referencing external queue. As a result, calling functions did not expect the NULL on return. External Rx queue: - In mlx5_ext_rxq_get() remove assert and return NULL if a queue index does not point to a valid external queue. - In mlx5_ext_rxq_verify() validate that probed queue index references a valid extern queue. Fixes: 311b17e669ab ("net/mlx5: support queue/RSS actions for external Rx queue") Cc: stable@dpdk.org Signed-off-by: Gregory Etelson Acked-by: Dariusz Sosnowski --- drivers/net/mlx5/mlx5_devx.c | 5 +++++ drivers/net/mlx5/mlx5_rxq.c | 17 ++++++++++------- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/drivers/net/mlx5/mlx5_devx.c b/drivers/net/mlx5/mlx5_devx.c index abdf461a32..8cee16ead9 100644 --- a/drivers/net/mlx5/mlx5_devx.c +++ b/drivers/net/mlx5/mlx5_devx.c @@ -681,6 +681,11 @@ mlx5_devx_ind_table_create_rqt_attr(struct rte_eth_dev *dev, struct mlx5_external_rxq *ext_rxq = mlx5_ext_rxq_get(dev, queues[i]); + if (ext_rxq == NULL) { + rte_errno = EINVAL; + mlx5_free(rqt_attr); + return NULL; + } rqt_attr->rq_list[i] = ext_rxq->hw_id; } else { struct mlx5_rxq_priv *rxq = diff --git a/drivers/net/mlx5/mlx5_rxq.c b/drivers/net/mlx5/mlx5_rxq.c index b1834aac7c..24612e9125 100644 --- a/drivers/net/mlx5/mlx5_rxq.c +++ b/drivers/net/mlx5/mlx5_rxq.c @@ -2152,7 +2152,8 @@ mlx5_ext_rxq_ref(struct rte_eth_dev *dev, uint16_t idx) { struct mlx5_external_rxq *rxq = mlx5_ext_rxq_get(dev, idx); - __atomic_fetch_add(&rxq->refcnt, 1, __ATOMIC_RELAXED); + if (rxq != NULL) + __atomic_fetch_add(&rxq->refcnt, 1, __ATOMIC_RELAXED); return rxq; } @@ -2172,7 +2173,9 @@ mlx5_ext_rxq_deref(struct rte_eth_dev *dev, uint16_t idx) { struct mlx5_external_rxq *rxq = mlx5_ext_rxq_get(dev, idx); - return __atomic_sub_fetch(&rxq->refcnt, 1, __ATOMIC_RELAXED); + return rxq != NULL ? + __atomic_sub_fetch(&rxq->refcnt, 1, __ATOMIC_RELAXED) : + UINT32_MAX; } /** @@ -2191,8 +2194,8 @@ mlx5_ext_rxq_get(struct rte_eth_dev *dev, uint16_t idx) { struct mlx5_priv *priv = dev->data->dev_private; - MLX5_ASSERT(mlx5_is_external_rxq(dev, idx)); - return &priv->ext_rxqs[idx - MLX5_EXTERNAL_RX_QUEUE_ID_MIN]; + return mlx5_is_external_rxq(dev, idx) ? + &priv->ext_rxqs[idx - MLX5_EXTERNAL_RX_QUEUE_ID_MIN] : NULL; } /** @@ -2352,7 +2355,6 @@ int mlx5_ext_rxq_verify(struct rte_eth_dev *dev) { struct mlx5_priv *priv = dev->data->dev_private; - struct mlx5_external_rxq *rxq; uint32_t i; int ret = 0; @@ -2360,8 +2362,9 @@ mlx5_ext_rxq_verify(struct rte_eth_dev *dev) return 0; for (i = MLX5_EXTERNAL_RX_QUEUE_ID_MIN; i <= UINT16_MAX ; ++i) { - rxq = mlx5_ext_rxq_get(dev, i); - if (rxq->refcnt < 2) + struct mlx5_external_rxq *rxq = mlx5_ext_rxq_get(dev, i); + + if (rxq == NULL || rxq->refcnt < 2) continue; DRV_LOG(DEBUG, "Port %u external RxQ %u still referenced.", dev->data->port_id, i); -- 2.51.0