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 C24A7A0032 for ; Fri, 18 Feb 2022 13:40:45 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id BD24240395; Fri, 18 Feb 2022 13:40:45 +0100 (CET) Received: from mail-wm1-f50.google.com (mail-wm1-f50.google.com [209.85.128.50]) by mails.dpdk.org (Postfix) with ESMTP id 0594B40141 for ; Fri, 18 Feb 2022 13:40:44 +0100 (CET) Received: by mail-wm1-f50.google.com with SMTP id q198-20020a1ca7cf000000b0037bb52545c6so8540623wme.1 for ; Fri, 18 Feb 2022 04:40:44 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=1k6q5AvIj2PDPHsfJtg+8g78gFw94We/GH4CHstOKiM=; b=V2Gm71lFWLXWRKIKFcJ38ULgMduaXIhAtZu3BvFaLNxwBkNDhYVGQrMsf/ln/Iooev eq7XiZFAdH+gAjDe/bIpKyi97ztIvVEkwiaJ99wiMQ6rlJsYyfgD30xWbVEYfkOf1k/8 FqjO2rNTbTOTWixQhHvCFMeZkvAXb2LlrhQtzxLxHNE0Of+g0n9S4WQGYtaQJ3O7d/zJ 3Wzyax21+wJ6fGaY5+tYjPmELnbZ6Sa4OXv0sD0Te0ZhJLoP8b9dsp0nm4h/SF05R5P0 /aunjK3DKEv72qhf8dwQZTZzP+Hc6V+OHfFgyzwEb4vJuch0YIu6cnCI7BrJx7/W6QdJ W3rw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=1k6q5AvIj2PDPHsfJtg+8g78gFw94We/GH4CHstOKiM=; b=IwoYqwGvlsxXy11+Mk2etxizZt6an1/Ks/kAZnGy7s2SVA1ybtw4u71HUfyoh9PTw1 lv3F4cS/qofJ7qT6JEHfbyigtTZ54Q9HKeN8Hv4sEQD+s9w5DLkzAIorimrWilBxEG6U a8mItEBej4VSvkd+j7AT5OKFw1oB+c/Ls3PFCNuepbCjedIrjMyv2BSTUhDqKyjRlFxq rXzvRZ7c6B7sDNLo28RbC4nufnqZMisYlG9FP3BqK4Rzs3PCokNF991FQAFqXgVyVojm 9dhU596bdkuJpaaDcacOSSBu9YOe8yqohDaxW9NR3fSvYJPgydJvyBLwvZsyaNcNjRbv cBJg== X-Gm-Message-State: AOAM531seTkVN/gvsmT2L8K+TfinFhKIqYVgOOHOzbEKcVRT8/X8LkzT kg61zyMeHsw5ced9mx/qiHY= X-Google-Smtp-Source: ABdhPJzKxhDVPfwTE4n04Hez+9dPrJQP/ncWLKM4cegQrNWOxhlh53yb+N54/k7lY7dzBOR8NB0DXw== X-Received: by 2002:a05:600c:646:b0:37b:b738:f52c with SMTP id p6-20020a05600c064600b0037bb738f52cmr10585554wmm.30.1645188043633; Fri, 18 Feb 2022 04:40:43 -0800 (PST) Received: from localhost ([2a01:4b00:f41a:3600:360b:9754:2e3a:c344]) by smtp.gmail.com with ESMTPSA id x10sm4521791wre.110.2022.02.18.04.40.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 18 Feb 2022 04:40:43 -0800 (PST) From: luca.boccassi@gmail.com To: Lance Richardson Cc: Ajit Khaparde , dpdk stable Subject: patch 'net/bnxt: fix xstats names query overrun' has been queued to stable release 20.11.5 Date: Fri, 18 Feb 2022 12:37:51 +0000 Message-Id: <20220218123931.1749595-22-luca.boccassi@gmail.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220218123931.1749595-1-luca.boccassi@gmail.com> References: <20220218123931.1749595-1-luca.boccassi@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit 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 Hi, FYI, your patch has been queued to stable release 20.11.5 Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet. It will be pushed if I get no objections before 02/20/22. 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/bluca/dpdk-stable This queued commit can be viewed at: https://github.com/bluca/dpdk-stable/commit/e2c9b9902d30d697c673d93678ee8586e5427a79 Thanks. Luca Boccassi --- >From e2c9b9902d30d697c673d93678ee8586e5427a79 Mon Sep 17 00:00:00 2001 From: Lance Richardson Date: Tue, 30 Nov 2021 09:42:26 -0500 Subject: [PATCH] net/bnxt: fix xstats names query overrun [ upstream commit 8dcee14fbfca8c90cd09c88e0fda65819d82ded6 ] When the xstats_names parameter to rte_eth_xstats_get_names() is non-NULL and the size parameter is less than the required number of entries, the driver must return the required size without modifying (and over-running) the caller's xstats_names array. Update bnxt_dev_xstats_get_names_op() in accordance with this requirement. Fixes: bfb9c2260be2 ("net/bnxt: support xstats get/reset") Signed-off-by: Lance Richardson Acked-by: Ajit Khaparde --- drivers/net/bnxt/bnxt_stats.c | 103 +++++++++++++++++----------------- 1 file changed, 51 insertions(+), 52 deletions(-) diff --git a/drivers/net/bnxt/bnxt_stats.c b/drivers/net/bnxt/bnxt_stats.c index 47dcf40893..a35461677c 100644 --- a/drivers/net/bnxt/bnxt_stats.c +++ b/drivers/net/bnxt/bnxt_stats.c @@ -840,7 +840,7 @@ int bnxt_flow_stats_cnt(struct bnxt *bp) int bnxt_dev_xstats_get_names_op(struct rte_eth_dev *eth_dev, struct rte_eth_xstat_name *xstats_names, - __rte_unused unsigned int limit) + unsigned int size) { struct bnxt *bp = (struct bnxt *)eth_dev->data->dev_private; const unsigned int stat_cnt = RTE_DIM(bnxt_rx_stats_strings) + @@ -856,64 +856,63 @@ int bnxt_dev_xstats_get_names_op(struct rte_eth_dev *eth_dev, if (rc) return rc; - if (xstats_names != NULL) { - count = 0; - - for (i = 0; i < RTE_DIM(bnxt_rx_stats_strings); i++) { - strlcpy(xstats_names[count].name, - bnxt_rx_stats_strings[i].name, - sizeof(xstats_names[count].name)); - count++; - } - - for (i = 0; i < RTE_DIM(bnxt_tx_stats_strings); i++) { - strlcpy(xstats_names[count].name, - bnxt_tx_stats_strings[i].name, + if (xstats_names == NULL || size < stat_cnt) + return stat_cnt; + + for (i = 0; i < RTE_DIM(bnxt_rx_stats_strings); i++) { + strlcpy(xstats_names[count].name, + bnxt_rx_stats_strings[i].name, + sizeof(xstats_names[count].name)); + count++; + } + + for (i = 0; i < RTE_DIM(bnxt_tx_stats_strings); i++) { + strlcpy(xstats_names[count].name, + bnxt_tx_stats_strings[i].name, + sizeof(xstats_names[count].name)); + count++; + } + + for (i = 0; i < RTE_DIM(bnxt_func_stats_strings); i++) { + strlcpy(xstats_names[count].name, + bnxt_func_stats_strings[i].name, + sizeof(xstats_names[count].name)); + count++; + } + + for (i = 0; i < RTE_DIM(bnxt_rx_ext_stats_strings); i++) { + strlcpy(xstats_names[count].name, + bnxt_rx_ext_stats_strings[i].name, + sizeof(xstats_names[count].name)); + + count++; + } + + for (i = 0; i < RTE_DIM(bnxt_tx_ext_stats_strings); i++) { + strlcpy(xstats_names[count].name, + bnxt_tx_ext_stats_strings[i].name, + sizeof(xstats_names[count].name)); + + count++; + } + + if (bp->fw_cap & BNXT_FW_CAP_ADV_FLOW_COUNTERS && + bp->fw_cap & BNXT_FW_CAP_ADV_FLOW_MGMT && + BNXT_FLOW_XSTATS_EN(bp)) { + for (i = 0; i < bp->max_l2_ctx; i++) { + char buf[RTE_ETH_XSTATS_NAME_SIZE]; + + sprintf(buf, "flow_%d_bytes", i); + strlcpy(xstats_names[count].name, buf, sizeof(xstats_names[count].name)); count++; - } - for (i = 0; i < RTE_DIM(bnxt_func_stats_strings); i++) { - strlcpy(xstats_names[count].name, - bnxt_func_stats_strings[i].name, - sizeof(xstats_names[count].name)); - count++; - } - - for (i = 0; i < RTE_DIM(bnxt_rx_ext_stats_strings); i++) { - strlcpy(xstats_names[count].name, - bnxt_rx_ext_stats_strings[i].name, + sprintf(buf, "flow_%d_packets", i); + strlcpy(xstats_names[count].name, buf, sizeof(xstats_names[count].name)); count++; } - - for (i = 0; i < RTE_DIM(bnxt_tx_ext_stats_strings); i++) { - strlcpy(xstats_names[count].name, - bnxt_tx_ext_stats_strings[i].name, - sizeof(xstats_names[count].name)); - - count++; - } - - if (bp->fw_cap & BNXT_FW_CAP_ADV_FLOW_COUNTERS && - bp->fw_cap & BNXT_FW_CAP_ADV_FLOW_MGMT && - BNXT_FLOW_XSTATS_EN(bp)) { - for (i = 0; i < bp->max_l2_ctx; i++) { - char buf[RTE_ETH_XSTATS_NAME_SIZE]; - - sprintf(buf, "flow_%d_bytes", i); - strlcpy(xstats_names[count].name, buf, - sizeof(xstats_names[count].name)); - count++; - - sprintf(buf, "flow_%d_packets", i); - strlcpy(xstats_names[count].name, buf, - sizeof(xstats_names[count].name)); - - count++; - } - } } return stat_cnt; -- 2.30.2 --- Diff of the applied patch vs upstream commit (please double-check if non-empty: --- --- - 2022-02-18 12:37:39.007120044 +0000 +++ 0022-net-bnxt-fix-xstats-names-query-overrun.patch 2022-02-18 12:37:37.558788972 +0000 @@ -1 +1 @@ -From 8dcee14fbfca8c90cd09c88e0fda65819d82ded6 Mon Sep 17 00:00:00 2001 +From e2c9b9902d30d697c673d93678ee8586e5427a79 Mon Sep 17 00:00:00 2001 @@ -5,0 +6,2 @@ +[ upstream commit 8dcee14fbfca8c90cd09c88e0fda65819d82ded6 ] + @@ -16 +17,0 @@ -Cc: stable@dpdk.org @@ -25 +26 @@ -index 991eafc644..197fd7c02b 100644 +index 47dcf40893..a35461677c 100644 @@ -28 +29 @@ -@@ -846,7 +846,7 @@ int bnxt_flow_stats_cnt(struct bnxt *bp) +@@ -840,7 +840,7 @@ int bnxt_flow_stats_cnt(struct bnxt *bp) @@ -37 +38 @@ -@@ -862,64 +862,63 @@ int bnxt_dev_xstats_get_names_op(struct rte_eth_dev *eth_dev, +@@ -856,64 +856,63 @@ int bnxt_dev_xstats_get_names_op(struct rte_eth_dev *eth_dev,