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 2252EA09E5 for ; Tue, 8 Dec 2020 11:37:23 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 184A798; Tue, 8 Dec 2020 11:37:22 +0100 (CET) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [63.128.21.124]) by dpdk.org (Postfix) with ESMTP id 5EE8198 for ; Tue, 8 Dec 2020 11:37:21 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1607423839; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=WK052VLjAjw4YEolbHMiV6mTWQuGfYdX9UftQ6CSj5M=; b=UjLJERQoXQ9IisdXXiWA/3MYqp85MLmAI/d+YMJkT83jBr7D7ovFzP5YJ4OfLNLKThLHEh 3SJRO5Ip6o/r9KUjH7lTKIQgP2xaprH5vQfkLA08d3ZtizrLrqtWKRAUCrnKp5OrBldTYu mfODW3y/Ik2YAqdgKfoLmoPAYG9qjJQ= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-84-DTeDDyf4O66KGT-IbjyVYA-1; Tue, 08 Dec 2020 05:37:18 -0500 X-MC-Unique: DTeDDyf4O66KGT-IbjyVYA-1 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id E7229801FCC; Tue, 8 Dec 2020 10:37:16 +0000 (UTC) Received: from [10.36.114.230] (ovpn-114-230.ams2.redhat.com [10.36.114.230]) by smtp.corp.redhat.com (Postfix) with ESMTP id 461DE5B4A1; Tue, 8 Dec 2020 10:37:15 +0000 (UTC) To: Shiri Kuzin , stable@dpdk.org Cc: viacheslavo@nvidia.com, Ralf Hoffmann , Matan Azrad References: <20201208075435.24659-1-shirik@nvidia.com> From: Kevin Traynor Message-ID: <911a1e57-b54a-1727-4901-431936ead2a9@redhat.com> Date: Tue, 8 Dec 2020 10:37:14 +0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.4.0 MIME-Version: 1.0 In-Reply-To: <20201208075435.24659-1-shirik@nvidia.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=ktraynor@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 8bit Subject: Re: [dpdk-stable] [PATCH] [18.11] net/mlx5: fix xstats reset reinitialization 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" On 08/12/2020 07:54, Shiri Kuzin wrote: > [ 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 > --- Hi, this does not compile ../drivers/net/mlx5/mlx5_stats.c: In function ‘mlx5_xstats_reset’: ../drivers/net/mlx5/mlx5_stats.c:493:10: warning: ‘return’ with a value, in function returning void [-Wreturn-type] 493 | return -rte_errno; ../drivers/net/mlx5/mlx5_stats.c:470:1: note: declared here 470 | mlx5_xstats_reset(struct rte_eth_dev *dev) | ^~~~~~~~~~~~~~~~~ ../drivers/net/mlx5/mlx5_stats.c:500:10: warning: ‘return’ with a value, in function returning void [-Wreturn-type] 500 | return ret; | ^~~ ../drivers/net/mlx5/mlx5_stats.c:470:1: note: declared here 470 | mlx5_xstats_reset(struct rte_eth_dev *dev) | ^~~~~~~~~~~~~~~~~ ../drivers/net/mlx5/mlx5_stats.c:504:14: error: ‘struct mlx5_xstats_ctrl’ has no member named ‘hw_stats’ 504 | xstats_ctrl->hw_stats[i] = 0; | ^~ ../drivers/net/mlx5/mlx5_stats.c:507:9: warning: ‘return’ with a value, in function returning void [-Wreturn-type] 507 | return 0; | ^ ../drivers/net/mlx5/mlx5_stats.c:470:1: note: declared here 470 | mlx5_xstats_reset(struct rte_eth_dev *dev) | ^~~~~~~~~~~~~~~~~ [9/623] Compiling C object drivers/libtmp_rte_pmd_mlx5.a.p/net_mlx5_mlx5_rxtx_vec.c.o > drivers/net/mlx5/mlx5_stats.c | 20 ++++++++++++++++---- > 1 file changed, 16 insertions(+), 4 deletions(-) > > diff --git a/drivers/net/mlx5/mlx5_stats.c b/drivers/net/mlx5/mlx5_stats.c > index 6906dc81cc..38a2ffba4a 100644 > --- a/drivers/net/mlx5/mlx5_stats.c > +++ b/drivers/net/mlx5/mlx5_stats.c > @@ -473,8 +473,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); > @@ -485,14 +484,27 @@ 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)); > - return; > + 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; > } > > /** >