DPDK patches and discussions
 help / color / mirror / Atom feed
* [dpdk-dev]  [PATCH] net/mvpp2: fix memory leak in error path
@ 2020-10-22  4:25 wangyunjian
  2020-10-22  6:40 ` [dpdk-dev] [EXT] " Liron Himi
  0 siblings, 1 reply; 3+ messages in thread
From: wangyunjian @ 2020-10-22  4:25 UTC (permalink / raw)
  To: dev; +Cc: lironh, jerry.lilijun, xudingke, Yunjian Wang, stable

From: Yunjian Wang <wangyunjian@huawei.com>

In mrvl_create() allocated memory for 'mtr', we don't free it
when profile get fails and it will lead to memory leak.

We can get profile at the beginning of the function to
fix it, before calling mtr = rte_zmalloc_socket().

Fixes: cdb53f8da628 ("net/mvpp2: support metering")
Cc: stable@dpdk.org

Signed-off-by: Yunjian Wang <wangyunjian@huawei.com>
---
 drivers/net/mvpp2/mrvl_mtr.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/drivers/net/mvpp2/mrvl_mtr.c b/drivers/net/mvpp2/mrvl_mtr.c
index 39272acea4..2fa5cb43ad 100644
--- a/drivers/net/mvpp2/mrvl_mtr.c
+++ b/drivers/net/mvpp2/mrvl_mtr.c
@@ -329,6 +329,12 @@ mrvl_create(struct rte_eth_dev *dev, uint32_t mtr_id,
 	struct mrvl_mtr_profile *profile;
 	struct mrvl_mtr *mtr;
 
+	profile = mrvl_mtr_profile_from_id(priv, params->meter_profile_id);
+	if (!profile)
+		return -rte_mtr_error_set(error, EINVAL,
+					  RTE_MTR_ERROR_TYPE_METER_PROFILE_ID,
+					  NULL, "Profile id does not exist\n");
+
 	mtr = mrvl_mtr_from_id(priv, mtr_id);
 	if (mtr)
 		return -rte_mtr_error_set(error, EEXIST,
@@ -341,12 +347,6 @@ mrvl_create(struct rte_eth_dev *dev, uint32_t mtr_id,
 					  RTE_MTR_ERROR_TYPE_UNSPECIFIED,
 					  NULL, NULL);
 
-	profile = mrvl_mtr_profile_from_id(priv, params->meter_profile_id);
-	if (!profile)
-		return -rte_mtr_error_set(error, EINVAL,
-					  RTE_MTR_ERROR_TYPE_METER_PROFILE_ID,
-					  NULL, "Profile id does not exist\n");
-
 	mtr->shared = shared;
 	mtr->mtr_id = mtr_id;
 	mtr->plcr_bit = MRVL_PLCR_BIT_INVALID;
-- 
2.23.0


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [dpdk-dev] [EXT] [PATCH] net/mvpp2: fix memory leak in error path
  2020-10-22  4:25 [dpdk-dev] [PATCH] net/mvpp2: fix memory leak in error path wangyunjian
@ 2020-10-22  6:40 ` Liron Himi
  2020-10-23 16:31   ` Ferruh Yigit
  0 siblings, 1 reply; 3+ messages in thread
From: Liron Himi @ 2020-10-22  6:40 UTC (permalink / raw)
  To: wangyunjian, dev; +Cc: jerry.lilijun, xudingke, stable, Liron Himi

Acked-by: Liron Himi <lironh@marvell.com>

-----Original Message-----
From: wangyunjian <wangyunjian@huawei.com> 
Sent: Thursday, 22 October 2020 07:25
To: dev@dpdk.org
Cc: Liron Himi <lironh@marvell.com>; jerry.lilijun@huawei.com; xudingke@huawei.com; Yunjian Wang <wangyunjian@huawei.com>; stable@dpdk.org
Subject: [EXT] [dpdk-dev] [PATCH] net/mvpp2: fix memory leak in error path

External Email

----------------------------------------------------------------------
From: Yunjian Wang <wangyunjian@huawei.com>

In mrvl_create() allocated memory for 'mtr', we don't free it when profile get fails and it will lead to memory leak.

We can get profile at the beginning of the function to fix it, before calling mtr = rte_zmalloc_socket().

Fixes: cdb53f8da628 ("net/mvpp2: support metering")
Cc: stable@dpdk.org

Signed-off-by: Yunjian Wang <wangyunjian@huawei.com>
---
 drivers/net/mvpp2/mrvl_mtr.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/drivers/net/mvpp2/mrvl_mtr.c b/drivers/net/mvpp2/mrvl_mtr.c index 39272acea4..2fa5cb43ad 100644
--- a/drivers/net/mvpp2/mrvl_mtr.c
+++ b/drivers/net/mvpp2/mrvl_mtr.c
@@ -329,6 +329,12 @@ mrvl_create(struct rte_eth_dev *dev, uint32_t mtr_id,
 	struct mrvl_mtr_profile *profile;
 	struct mrvl_mtr *mtr;
 
+	profile = mrvl_mtr_profile_from_id(priv, params->meter_profile_id);
+	if (!profile)
+		return -rte_mtr_error_set(error, EINVAL,
+					  RTE_MTR_ERROR_TYPE_METER_PROFILE_ID,
+					  NULL, "Profile id does not exist\n");
+
 	mtr = mrvl_mtr_from_id(priv, mtr_id);
 	if (mtr)
 		return -rte_mtr_error_set(error, EEXIST, @@ -341,12 +347,6 @@ mrvl_create(struct rte_eth_dev *dev, uint32_t mtr_id,
 					  RTE_MTR_ERROR_TYPE_UNSPECIFIED,
 					  NULL, NULL);
 
-	profile = mrvl_mtr_profile_from_id(priv, params->meter_profile_id);
-	if (!profile)
-		return -rte_mtr_error_set(error, EINVAL,
-					  RTE_MTR_ERROR_TYPE_METER_PROFILE_ID,
-					  NULL, "Profile id does not exist\n");
-
 	mtr->shared = shared;
 	mtr->mtr_id = mtr_id;
 	mtr->plcr_bit = MRVL_PLCR_BIT_INVALID;
--
2.23.0


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [dpdk-dev] [EXT] [PATCH] net/mvpp2: fix memory leak in error path
  2020-10-22  6:40 ` [dpdk-dev] [EXT] " Liron Himi
@ 2020-10-23 16:31   ` Ferruh Yigit
  0 siblings, 0 replies; 3+ messages in thread
From: Ferruh Yigit @ 2020-10-23 16:31 UTC (permalink / raw)
  To: Liron Himi, wangyunjian, dev; +Cc: jerry.lilijun, xudingke, stable

On 10/22/2020 7:40 AM, Liron Himi wrote:

<...>

> Subject: [EXT] [dpdk-dev] [PATCH] net/mvpp2: fix memory leak in error path
> 
> External Email
> 
> ----------------------------------------------------------------------
> From: Yunjian Wang <wangyunjian@huawei.com>
> 
> In mrvl_create() allocated memory for 'mtr', we don't free it when profile get fails and it will lead to memory leak.
> 
> We can get profile at the beginning of the function to fix it, before calling mtr = rte_zmalloc_socket().
> 
> Fixes: cdb53f8da628 ("net/mvpp2: support metering")
> Cc: stable@dpdk.org
> 
> Signed-off-by: Yunjian Wang <wangyunjian@huawei.com>
 >
 > Acked-by: Liron Himi <lironh@marvell.com>
 >

Applied to dpdk-next-net/main, thanks.

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2020-10-23 16:31 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-10-22  4:25 [dpdk-dev] [PATCH] net/mvpp2: fix memory leak in error path wangyunjian
2020-10-22  6:40 ` [dpdk-dev] [EXT] " Liron Himi
2020-10-23 16:31   ` Ferruh Yigit

DPDK patches and discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://inbox.dpdk.org/dev/0 dev/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 dev dev/ http://inbox.dpdk.org/dev \
		dev@dpdk.org
	public-inbox-index dev

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://inbox.dpdk.org/inbox.dpdk.dev


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git