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 8DE98A0C47 for ; Tue, 10 Aug 2021 17:44:27 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 87A2F40686; Tue, 10 Aug 2021 17:44:27 +0200 (CEST) Received: from smtp-relay-canonical-1.canonical.com (smtp-relay-canonical-1.canonical.com [185.125.188.121]) by mails.dpdk.org (Postfix) with ESMTP id 17F7C4014F for ; Tue, 10 Aug 2021 17:44:26 +0200 (CEST) Received: from mail-ej1-f69.google.com (mail-ej1-f69.google.com [209.85.218.69]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-canonical-1.canonical.com (Postfix) with ESMTPS id F3BB43F107 for ; Tue, 10 Aug 2021 15:44:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1628610265; bh=GRqkMhF47SvYpNrBXh/mQ20nWUNlKZdhNiHDz9K6/2E=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=qZ1W2JZpfF9Nd0IhFqwmEYwx8e2Hso0mpmNCybQ5EQuyE1QbRBP0swpvcKrJxi8ia dqSmzsCoRP4m9B7Rj+0E5/cTjLrZbWsDCRP2Zc85hw7oN4wlIhJoY5N2UjNiACstgC 0TVw+kmWuFENjgE/1ymjZfTNhMCUHUVQQ16RmxnfD4U4Lc3vY1FWYYwYbgdEHeUoga deSm+ddSbTJ/bL9ta7c+5YbxLgerf0c7AskWGdeJljXoQFYVvICNK67ogqD+WnfGF6 WII2EL4BdajnnQqX0n94RpTnBph2WA4MZeU9PxtE6HnA6X3UFAGtWcE18GBstcwWkj wsfTUln0Z2wJw== Received: by mail-ej1-f69.google.com with SMTP id h13-20020a1709062dcdb02905aec576a827so2129080eji.23 for ; Tue, 10 Aug 2021 08:44:25 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=GRqkMhF47SvYpNrBXh/mQ20nWUNlKZdhNiHDz9K6/2E=; b=qYHjoxX9Wqy1yVo2WFxxjtr3ceyOHfABz5siUcjNKuPkk+96alVP2OERUaOiZMGwjz 2f2PgMden8nNd14uKZ5j4KNerj4CS7NLalS0jAWHM1+YZvQT2JN7+zk/s4cv7MSahXUb i2KJvxmsiNv8CfxsXm+WxiaEQhsvudal4j2S+sJRUQlEorRRaxoiAvjx9exd4Cl4uEe4 f5cfLESHecR5qrWD4x0EfRFoSV7vlXp1pfsZkLSfTCIz6GiGFdVvZulTYKOhp5Ixp2gu eQuA/EELGxsUIS376zVcjex+S2VtCHQnXKi9sOSLud/qnS0GrLOtr2+VTN7akwMik4ER RLTA== X-Gm-Message-State: AOAM532sa3unjiX+zTyjBaWIuUFaf8YjFyS9hzxh71rcgx56t0ttWphZ U8uC3iYMMq+tpgJahHlTUmKZOA2D3yxNlatSg33sZgT2zFzfV72DhRTxE8DN9DNeYx532336avb 8VHbVGlBNbMLK80FMqh87sWRZ X-Received: by 2002:aa7:c898:: with SMTP id p24mr669789eds.120.1628610265732; Tue, 10 Aug 2021 08:44:25 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwqirNdt4iScSshxFZuJxQuuq3m4XDVlpYLxwh21Sbk2tu+nihsjT4vfew3i+2TfJFJ8GsYSQ== X-Received: by 2002:aa7:c898:: with SMTP id p24mr669776eds.120.1628610265554; Tue, 10 Aug 2021 08:44:25 -0700 (PDT) Received: from Keschdeichel.fritz.box ([2001:67c:1560:8007::aac:c4ad]) by smtp.gmail.com with ESMTPSA id t9sm9371640edd.33.2021.08.10.08.44.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 10 Aug 2021 08:44:25 -0700 (PDT) From: christian.ehrhardt@canonical.com To: Dmitry Kozlyuk Cc: Matan Azrad , dpdk stable Date: Tue, 10 Aug 2021 17:39:56 +0200 Message-Id: <20210810154022.749358-76-christian.ehrhardt@canonical.com> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20210810154022.749358-1-christian.ehrhardt@canonical.com> References: <20210810154022.749358-1-christian.ehrhardt@canonical.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [dpdk-stable] patch 'net/mlx5: fix Rx/Tx queue checks' has been queued to stable release 19.11.10 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 19.11.10 Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet. It will be pushed if I get no objections before 08/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/cpaelzer/dpdk-stable-queue This queued commit can be viewed at: https://github.com/cpaelzer/dpdk-stable-queue/commit/a1b444b122c2784e383cd9df6880087a1e038095 Thanks. Christian Ehrhardt --- >From a1b444b122c2784e383cd9df6880087a1e038095 Mon Sep 17 00:00:00 2001 From: Dmitry Kozlyuk Date: Tue, 20 Jul 2021 10:53:35 +0300 Subject: [PATCH] net/mlx5: fix Rx/Tx queue checks [ upstream commit 94e257ec8ca82a98e38ffb9e7c117a8aac554489 ] When device configuration was interrupted by a signal, mlx5_rxq/txq_release() could access yet unitinialized array and crash the application. Add checks whether queue array is initialized. Fixes: a1366b1a2be3 ("net/mlx5: add reference counter on DPDK Rx queues") Fixes: 6e78005a9b30 ("net/mlx5: add reference counter on DPDK Tx queues") Signed-off-by: Dmitry Kozlyuk Acked-by: Matan Azrad --- drivers/net/mlx5/mlx5_rxq.c | 2 +- drivers/net/mlx5/mlx5_txq.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/net/mlx5/mlx5_rxq.c b/drivers/net/mlx5/mlx5_rxq.c index c0605637a7..aaa26a40d4 100644 --- a/drivers/net/mlx5/mlx5_rxq.c +++ b/drivers/net/mlx5/mlx5_rxq.c @@ -2074,7 +2074,7 @@ mlx5_rxq_release(struct rte_eth_dev *dev, uint16_t idx) struct mlx5_priv *priv = dev->data->dev_private; struct mlx5_rxq_ctrl *rxq_ctrl; - if (!(*priv->rxqs)[idx]) + if (priv->rxqs == NULL || (*priv->rxqs)[idx] == NULL) return 0; rxq_ctrl = container_of((*priv->rxqs)[idx], struct mlx5_rxq_ctrl, rxq); assert(rxq_ctrl->priv); diff --git a/drivers/net/mlx5/mlx5_txq.c b/drivers/net/mlx5/mlx5_txq.c index 9c929a57ea..a63b362048 100644 --- a/drivers/net/mlx5/mlx5_txq.c +++ b/drivers/net/mlx5/mlx5_txq.c @@ -1410,7 +1410,7 @@ mlx5_txq_release(struct rte_eth_dev *dev, uint16_t idx) struct mlx5_priv *priv = dev->data->dev_private; struct mlx5_txq_ctrl *txq; - if (!(*priv->txqs)[idx]) + if (priv->txqs == NULL || (*priv->txqs)[idx] == NULL) return 0; txq = container_of((*priv->txqs)[idx], struct mlx5_txq_ctrl, txq); if (txq->obj && !mlx5_txq_obj_release(txq->obj)) -- 2.32.0 --- Diff of the applied patch vs upstream commit (please double-check if non-empty: --- --- - 2021-08-10 15:11:15.948402460 +0200 +++ 0076-net-mlx5-fix-Rx-Tx-queue-checks.patch 2021-08-10 15:11:13.082638562 +0200 @@ -1 +1 @@ -From 94e257ec8ca82a98e38ffb9e7c117a8aac554489 Mon Sep 17 00:00:00 2001 +From a1b444b122c2784e383cd9df6880087a1e038095 Mon Sep 17 00:00:00 2001 @@ -5,0 +6,2 @@ +[ upstream commit 94e257ec8ca82a98e38ffb9e7c117a8aac554489 ] + @@ -13 +14,0 @@ -Cc: stable@dpdk.org @@ -23 +24 @@ -index dacffc9251..4a8b67e731 100644 +index c0605637a7..aaa26a40d4 100644 @@ -26 +27 @@ -@@ -1712,7 +1712,7 @@ mlx5_rxq_release(struct rte_eth_dev *dev, uint16_t idx) +@@ -2074,7 +2074,7 @@ mlx5_rxq_release(struct rte_eth_dev *dev, uint16_t idx) @@ -34 +35 @@ - if (__atomic_sub_fetch(&rxq_ctrl->refcnt, 1, __ATOMIC_RELAXED) > 1) + assert(rxq_ctrl->priv); @@ -36 +37 @@ -index f68c0c61a9..eb4d34ca55 100644 +index 9c929a57ea..a63b362048 100644 @@ -39 +40 @@ -@@ -1246,7 +1246,7 @@ mlx5_txq_release(struct rte_eth_dev *dev, uint16_t idx) +@@ -1410,7 +1410,7 @@ mlx5_txq_release(struct rte_eth_dev *dev, uint16_t idx) @@ -41 +42 @@ - struct mlx5_txq_ctrl *txq_ctrl; + struct mlx5_txq_ctrl *txq; @@ -46,2 +47,2 @@ - txq_ctrl = container_of((*priv->txqs)[idx], struct mlx5_txq_ctrl, txq); - if (__atomic_sub_fetch(&txq_ctrl->refcnt, 1, __ATOMIC_RELAXED) > 1) + txq = container_of((*priv->txqs)[idx], struct mlx5_txq_ctrl, txq); + if (txq->obj && !mlx5_txq_obj_release(txq->obj))