From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 93C3CA0527 for ; Mon, 9 Nov 2020 19:42:55 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 8C0137CAE; Mon, 9 Nov 2020 19:42:54 +0100 (CET) Received: from mail-wr1-f47.google.com (mail-wr1-f47.google.com [209.85.221.47]) by dpdk.org (Postfix) with ESMTP id 5A1FA72E2 for ; Mon, 9 Nov 2020 19:42:52 +0100 (CET) Received: by mail-wr1-f47.google.com with SMTP id 33so9861710wrl.7 for ; Mon, 09 Nov 2020 10:42:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=kazL+P6S0k0TFMA37c8PwP1+xnsvS2LFE1C4ij/nQXY=; b=keV8LYB8cqGzbknwnaNTl7zErKzhwms7wFTU6DEuVx0UAjRo0DaxboxmnxLNVxOitN D9PUmB6FnpkgWKmUR8AEROp6UGeUjrsoLM5NwZ6ulPqxDQR1rLsRcF7sE2HfXDfTFvz8 0MuUYub0Cm2oCabBfFueffN2rciXIYRncC80RgxLYizJHg90HX8o8OVaITxE9Spsliv8 oVAr9/CXLBJ1eu7h32aKAhUIS6HXAxDKfb/zPU8dDrJ6ik8bt98x5cchSYZjiuelZkFq n6s7wyBD+Jp4N53m6s7N2+z2wSr4R9B8p3A4j9sFV3MHpnnix3OC51TdofKYF9QAlS0i 3mLw== 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=kazL+P6S0k0TFMA37c8PwP1+xnsvS2LFE1C4ij/nQXY=; b=gtsDPBegEuzFwASUe1fHdc5FFrNYLMQwO3C7XU40SypAqYDD+W0Y/6gllJdm2MkopN Agx15vklVIvr2RKdq10+5p+iX67brzrkEql0Oje2ju5JGKgX8/DwxxrHKy1fhYW8zOpX dUKoiR5JusA0HAe/FD7NDOvaPz0tqbXKg53WqhpcpgZreq7e8OIT9l135b5SGdjCILbb gq4CepBwwBjRbkiYcWa8jCm+rmVw7ErGMTnplfNfNVlC+yBtHUNalCmJQwfYNnuuaNLb okyL7JczC8v0JX4vVWy/Gk5FZ0yC2M8RLRztv4SqtjY5Cb0so2DwZMVkWhzky+oDDRLG kpsA== X-Gm-Message-State: AOAM530ckyscdjYZsXK8+Ir5+OiGTDmjBMidxLquDSZakRs/ERn1HgG9 nhFdSNQJjllR3T0JJya07GE/lCQ+U7QMwg== X-Google-Smtp-Source: ABdhPJwyMfgRG0R2ma41EzLICSfDukBYPpmQT5d28khaqYoT9Hk1NMAooXFZzDI3+UWzBzQbXMZfYQ== X-Received: by 2002:adf:c3c8:: with SMTP id d8mr7992915wrg.366.1604947372120; Mon, 09 Nov 2020 10:42:52 -0800 (PST) Received: from localhost ([88.98.246.218]) by smtp.gmail.com with ESMTPSA id x1sm13789626wrl.41.2020.11.09.10.42.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 09 Nov 2020 10:42:51 -0800 (PST) From: luca.boccassi@gmail.com To: Shiri Kuzin Cc: Ralf Hoffmann , Matan Azrad , dpdk stable Date: Mon, 9 Nov 2020 18:40:17 +0000 Message-Id: <20201109184111.3463090-29-luca.boccassi@gmail.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20201109184111.3463090-1-luca.boccassi@gmail.com> References: <20201028104606.3504127-207-luca.boccassi@gmail.com> <20201109184111.3463090-1-luca.boccassi@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [dpdk-stable] patch 'net/mlx5: fix xstats reset reinitialization' has been queued to stable release 19.11.6 X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.15 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.6 Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet. It will be pushed if I get no objections before 11/11/20. 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/d0f1f4bd45a3e2ea9490ea49d6ec8a0373ab21b5 Thanks. Luca Boccassi --- >From d0f1f4bd45a3e2ea9490ea49d6ec8a0373ab21b5 Mon Sep 17 00:00:00 2001 From: Shiri Kuzin Date: Mon, 19 Oct 2020 09:36:50 +0300 Subject: [PATCH] net/mlx5: fix xstats reset reinitialization [ upstream commit 42dcd453d9b63841a5460a6ca3872eb7648d73bd ] The mlx5_xstats_reset clears the device extended statistics. In this function the driver may reinitialize the structures that are used to read device counters. In case of reinitialization, the number of counters may change, which wouldn't be taken into account by the reset API callback and can cause a segmentation fault. This issue is fixed by allocating the counters size after the reinitialization. Fixes: a4193ae3bc4f ("net/mlx5: support extended statistics") Reported-by: Ralf Hoffmann Signed-off-by: Shiri Kuzin Acked-by: Matan Azrad --- drivers/net/mlx5/mlx5_stats.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/drivers/net/mlx5/mlx5_stats.c b/drivers/net/mlx5/mlx5_stats.c index f3ec9543fe..ccdcdcfff6 100644 --- a/drivers/net/mlx5/mlx5_stats.c +++ b/drivers/net/mlx5/mlx5_stats.c @@ -536,8 +536,7 @@ mlx5_xstats_reset(struct rte_eth_dev *dev) struct mlx5_xstats_ctrl *xstats_ctrl = &priv->xstats_ctrl; int stats_n; unsigned int i; - unsigned int n = xstats_ctrl->mlx5_stats_n; - uint64_t counters[n]; + uint64_t *counters; int ret; stats_n = mlx5_ethtool_get_stats_n(dev); @@ -548,17 +547,26 @@ mlx5_xstats_reset(struct rte_eth_dev *dev) } if (xstats_ctrl->stats_n != stats_n) mlx5_stats_init(dev); + counters = malloc(sizeof(*counters) * xstats_ctrl->mlx5_stats_n); + if (!counters) { + DRV_LOG(WARNING, "port %u unable to allocate memory for xstats " + "counters", + dev->data->port_id); + rte_errno = ENOMEM; + return -rte_errno; + } ret = mlx5_read_dev_counters(dev, counters); if (ret) { DRV_LOG(ERR, "port %u cannot read device counters: %s", dev->data->port_id, strerror(rte_errno)); + free(counters); return ret; } - for (i = 0; i != n; ++i) { + for (i = 0; i != xstats_ctrl->mlx5_stats_n; ++i) { xstats_ctrl->base[i] = counters[i]; xstats_ctrl->hw_stats[i] = 0; } - + free(counters); return 0; } -- 2.27.0 --- Diff of the applied patch vs upstream commit (please double-check if non-empty: --- --- - 2020-11-09 18:40:12.380967135 +0000 +++ 0029-net-mlx5-fix-xstats-reset-reinitialization.patch 2020-11-09 18:40:11.131311282 +0000 @@ -1 +1 @@ -From 42dcd453d9b63841a5460a6ca3872eb7648d73bd Mon Sep 17 00:00:00 2001 +From d0f1f4bd45a3e2ea9490ea49d6ec8a0373ab21b5 Mon Sep 17 00:00:00 2001 @@ -5,0 +6,2 @@ +[ upstream commit 42dcd453d9b63841a5460a6ca3872eb7648d73bd ] + @@ -18 +19,0 @@ -Cc: stable@dpdk.org @@ -24,2 +25,2 @@ - drivers/net/mlx5/mlx5_stats.c | 18 +++++++++++++++--- - 1 file changed, 15 insertions(+), 3 deletions(-) + drivers/net/mlx5/mlx5_stats.c | 16 ++++++++++++---- + 1 file changed, 12 insertions(+), 4 deletions(-) @@ -28 +29 @@ -index e30542e984..82d4d4a745 100644 +index f3ec9543fe..ccdcdcfff6 100644 @@ -31,9 +32 @@ -@@ -17,6 +17,7 @@ - #include "mlx5_defs.h" - #include "mlx5.h" - #include "mlx5_rxtx.h" -+#include "mlx5_malloc.h" - - /** - * DPDK callback to get extended device statistics. -@@ -216,8 +217,7 @@ mlx5_xstats_reset(struct rte_eth_dev *dev) +@@ -536,8 +536,7 @@ mlx5_xstats_reset(struct rte_eth_dev *dev) @@ -48,2 +41,2 @@ - stats_n = mlx5_os_get_stats_n(dev); -@@ -228,17 +228,29 @@ mlx5_xstats_reset(struct rte_eth_dev *dev) + stats_n = mlx5_ethtool_get_stats_n(dev); +@@ -548,17 +547,26 @@ mlx5_xstats_reset(struct rte_eth_dev *dev) @@ -52,4 +45,2 @@ - mlx5_os_stats_init(dev); -+ counters = mlx5_malloc(MLX5_MEM_SYS, sizeof(*counters) * -+ xstats_ctrl->mlx5_stats_n, 0, -+ SOCKET_ID_ANY); + mlx5_stats_init(dev); ++ counters = malloc(sizeof(*counters) * xstats_ctrl->mlx5_stats_n); @@ -63 +54 @@ - ret = mlx5_os_read_dev_counters(dev, counters); + ret = mlx5_read_dev_counters(dev, counters); @@ -67 +58 @@ -+ mlx5_free(counters); ++ free(counters); @@ -75,2 +66,2 @@ - mlx5_txpp_xstats_reset(dev); -+ mlx5_free(counters); +- ++ free(counters);