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 ABACA48B3E for ; Tue, 18 Nov 2025 10:54:40 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 880E940150; Tue, 18 Nov 2025 10:54:40 +0100 (CET) Received: from PH0PR06CU001.outbound.protection.outlook.com (mail-westus3azon11011065.outbound.protection.outlook.com [40.107.208.65]) by mails.dpdk.org (Postfix) with ESMTP id 093DC40150 for ; Tue, 18 Nov 2025 10:54:39 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=UhY3Z2qD6mID+ZeCwbh0g7PQtNvy2GfUoP2v2sQD1wHGfsGhhVVwbocp/CM/FSSv02PDoXP6z5l9bWrdEK3WAPtsXj8EJbwxmE6OHE7S/J1m8q1kV0ybX1cHOIu7cg+jCEOKGNhudrYCXqV3Qzled/BzI2bJJSa3pAr8CmuN4bypFXz6nzrC4NEoA+wL1V8daYGF1xq60OpGsFfVNBiuOU1rY2qUwDZ0EZkWNFmPUukLUKZffGPv6h0Ry/pafaN6mLDAmBtoxF2YkXfdfcEf0c5I0Wy1rFxxPmC4xwXrRGP35jI0V/rS0pEBUPxAl4LQO16YrxCL7Diq1mii716Ssw== 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=aX59lUAS6coLLRS9xV3eHn+09tZQCdqzZvbt699yWdk=; b=bHQBi0AM40URsOg+yNLdOxMYMtS7rav4Cip39JRAG5lmnCYootfsDlGxsM9Sj5KvE6lliQsT5qFX1IPbmLIofyuqgkPEukQ4Zds9s2J+hTxfUhAciDBBzbRA/svNUYmKk6AyQUo6Ns1DL4X+2abPLCW9RTAKtRFQjudTdGCFi58wu+fCB4s+g8Yv/E6/fNPAoRk3kU9BH56fPCANnWtZbxeT1PaTjRu4+bFRhDji0Vt3qdzoQmu1lm9GVG2MHc5OcaO9zD92e1UBZ82+kBqovXto8FsChp1drLpmtYrpnLNC8TkhrhX0FEOQ8yBdz4hLQGCqYPQLFzcfzBxQ8X+rxw== 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=aX59lUAS6coLLRS9xV3eHn+09tZQCdqzZvbt699yWdk=; b=uEom+OeoBc+ZO0rUPY+h/bqjsEn7xP7sNIsCsbIAL3OhBUG2PAIC5EWbhGxVjoFEAq6z7Xl431P1MX771tkPRFaC+irEEnKuU0Wy1yMTCSB5TfC//mokcjoYrnWU5ztHg0gLu+Cp01uEM72AUK83GQx2abR2mso2hIQEFkZhJ27NY7nWOcLwW0p8PmzRA6uHiXgIZxSOKsJgDHV5MqLT8WvzH049GgoI7TkIvUeax9nOUQUZT9rQH3j8arST+JUevQeUaJt0ZPaOyXuY52qmZ1GJpdLeHk+6UQ8mz8VK+H2l76xElVmL81jWiRNdAFzWSF0uqHpAclRB4z7dokvTxg== Received: from BN9PR03CA0875.namprd03.prod.outlook.com (2603:10b6:408:13c::10) by BN7PPF49208036B.namprd12.prod.outlook.com (2603:10b6:40f:fc02::6cf) 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:54:35 +0000 Received: from BN3PEPF0000B372.namprd21.prod.outlook.com (2603:10b6:408:13c:cafe::ac) by BN9PR03CA0875.outlook.office365.com (2603:10b6:408:13c::10) 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:54:35 +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 BN3PEPF0000B372.mail.protection.outlook.com (10.167.243.169) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9366.1 via Frontend Transport; Tue, 18 Nov 2025 09:54:35 +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:54:23 -0800 Received: from nvidia.com (10.126.230.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:54:21 -0800 From: Gregory Etelson To: CC: , , , Dariusz Sosnowski Subject: [PATCH 22.11] net/mlx5: fix external queues access [ upstream commit d524b58819b46ea47d02338204d24c2f2ba29ee2 ] Date: Tue, 18 Nov 2025 11:54:06 +0200 Message-ID: <20251118095406.461826-1-getelson@nvidia.com> X-Mailer: git-send-email 2.51.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-Originating-IP: [10.126.230.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: BN3PEPF0000B372:EE_|BN7PPF49208036B:EE_ X-MS-Office365-Filtering-Correlation-Id: 37854042-e0e0-4b3a-50c9-08de26887b24 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|376014|36860700013|1800799024|82310400026|7053199007; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?4qYENZy+RltPH6lsFGg0muMDXqdewl5/dpRrL3zShcVe5bi4TPnCBswHlyeb?= =?us-ascii?Q?eoVYIGw2OJpy/fNGdwHrFPMLp7fhmlBS75zAr5rrInT8YhmoDr34YD+PoRGt?= =?us-ascii?Q?cFT1F0FjljP+HVvrLq4GrjJdDo/0cs3NN2BYNMCWU38OcunFnqXoD6gOmQTt?= =?us-ascii?Q?3xyGkZf7KRi1RqH5eos+4SIVXOLOV4frtnYGDAt0xryPg2V+zxpXTJvgggKY?= =?us-ascii?Q?N01CWvki4PsOUJ+fB/bmpcjuVfWwqyVnvfsNKGDrDNg1jlBSNqqEfKyx/2l2?= =?us-ascii?Q?HbYhfRg0UBMEDCMZFHKMCH+wlEfmIKR892NzT+v6s+yQaMrmSRIi81O+Jh5B?= =?us-ascii?Q?dzqUn87I6/El1rF+KJPiJJaBYyMBN4nVsMAaGyI6TJq25TRtou93MSClBS6E?= =?us-ascii?Q?FHEb/TDNcabymxhtgImsOg241/NOf1dYXvqkSe+IV2B+qGpoHZj8rWoHD0dj?= =?us-ascii?Q?MrGwGgpYMr376ymv53xLorKu/7Hn1tBjrHQH1mMclRC0HWRY0vn3vSvIvuEY?= =?us-ascii?Q?JsQN7ocYhSDdaMbuG9V1o+nNfsyI8/BEBTV/X530IgS7Y6nv7Zam9aaZ8UHG?= =?us-ascii?Q?sVQBh9hBWAXtfxw9/jZu8oTa4c3l2Z2reDSeT3cOzlD7xD1+w8A3eUDym1XF?= =?us-ascii?Q?4+4CpXn4q8qAttGqDYc8jyklXiMGhlSrfAFJ7aqSUjcD+8SH+QbsVpcLkxos?= =?us-ascii?Q?ZtmrdjnFbO3t8+F6fL4jFOyFR8MhRC9uXgGvRanRrjFfUzmcBpzgDvicai5x?= =?us-ascii?Q?B2J5dBbSXwngC2+ndpiQN/V00OLsKIPYqrPIyFn9xDra3sUEtKBU5QMbQA6p?= =?us-ascii?Q?P6k8OUBFoe9dUi4jKdWYEsmyRE9bCGM5P4cSLhlUc8uq7IXxuqsQ2V0yUbLV?= =?us-ascii?Q?nH5DV5BqcfqkV9kxGlIe+8iLp6Gf098IzaK1VCaVRXNe86Tkm83rrMUEPxFc?= =?us-ascii?Q?Q5O3rSBrjsyqGsZd2ICEXT6VOddd/+dEIr0udYUtDNmpKCTLfKaOFrNcVvBh?= =?us-ascii?Q?94mcbiMwnt+NKLmCk6U/mAQf9CoCK/EulTb6S4A5wo3JtltmULKOnTc5zv9i?= =?us-ascii?Q?5j1QdUKqjtE6tpUJ4YO3nHk3ElXHS2wfbGWXa2zRn8ZVgoaADZ4zw/7kHgeW?= =?us-ascii?Q?BWvSExGR7JyLaaPgH2SZqP4Yn3C2QEcgsoPaLzf9NCs/ptJGJY56JpFLcIbE?= =?us-ascii?Q?ZNGQ+NL7d9s1iJGl28YriFned51TEbOFwSEqgUxYG5P70DY8UWUrKae8+7LO?= =?us-ascii?Q?jMDncNDSh+XfDX8H2lFBOYfII0mXIepIQHcicPP1CUGHzfW2aUzEz8j0B+qe?= =?us-ascii?Q?sXQIilVLA6tNcqB0yCzlSe87gB8eBGBEXQjDNpEcRoqI1tvBtRmbQPmf7rnb?= =?us-ascii?Q?XY2nwLjPzlzU8honMMD3krnCH/fJ/FszvVJifdwG+xsPR52rgCSFoKdFubUn?= =?us-ascii?Q?aWzBXuDZrBBifizEiXaYBwOMF0UNL8TaL1aPh77mSf9MWp+uz4Ki6hO59kcQ?= =?us-ascii?Q?LO6Vqtcr4gjQK7WJMpf3kcEqP5IZhh4RcBCxXuFcwUtgANK4ok+OMA/TSvZ7?= =?us-ascii?Q?bleTAzvCSBT/pGDLAQc=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)(376014)(36860700013)(1800799024)(82310400026)(7053199007); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Nov 2025 09:54:35.4755 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 37854042-e0e0-4b3a-50c9-08de26887b24 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: BN3PEPF0000B372.namprd21.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN7PPF49208036B 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 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