DPDK patches and discussions
 help / color / Atom feed
* [dpdk-dev]  [PATCH v4 0/3] fixes for device event
@ 2020-07-03  9:44 wangyunjian
  2020-07-03  9:46 ` [dpdk-dev] [PATCH v4 1/3] eal: fix memory leak when removing event_cb wangyunjian
                   ` (2 more replies)
  0 siblings, 3 replies; 6+ messages in thread
From: wangyunjian @ 2020-07-03  9:44 UTC (permalink / raw)
  To: dev; +Cc: jia.guo, jerry.lilijun, xudingke, Yunjian Wang

From: Yunjian Wang <wangyunjian@huawei.com>

This series include three fixes patches for device event.

---
v4:
 * add fix a wrong returned value
 * remove redundant check suggested by David Marchand

v3:
 * modified the format.

Yunjian Wang (3):
  eal: fix memory leak when removing event_cb
  eal: return error code when failure
  eal: fix a wrong returned value when callback exists

 lib/librte_eal/common/eal_common_dev.c | 13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)

-- 
1.8.3.1



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

* [dpdk-dev] [PATCH v4 1/3] eal: fix memory leak when removing event_cb
  2020-07-03  9:44 [dpdk-dev] [PATCH v4 0/3] fixes for device event wangyunjian
@ 2020-07-03  9:46 ` wangyunjian
  2020-07-29 11:47   ` wangyunjian
  2020-07-03  9:46 ` [dpdk-dev] [PATCH v4 2/3] eal: return error code when failure wangyunjian
  2020-07-03  9:46 ` [dpdk-dev] [PATCH v4 3/3] eal: fix a wrong returned value when callback exists wangyunjian
  2 siblings, 1 reply; 6+ messages in thread
From: wangyunjian @ 2020-07-03  9:46 UTC (permalink / raw)
  To: dev; +Cc: jia.guo, jerry.lilijun, xudingke, Yunjian Wang, stable

From: Yunjian Wang <wangyunjian@huawei.com>

The event_cb->dev_name is not freed when freeing event_cb,
and this causes a memory leak.

Fixes: a753e53d517b ("eal: add device event monitor framework")
Cc: stable@dpdk.org

Signed-off-by: Yunjian Wang <wangyunjian@huawei.com>
---
 lib/librte_eal/common/eal_common_dev.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/lib/librte_eal/common/eal_common_dev.c b/lib/librte_eal/common/eal_common_dev.c
index 9e4f09d..363a2ca 100644
--- a/lib/librte_eal/common/eal_common_dev.c
+++ b/lib/librte_eal/common/eal_common_dev.c
@@ -526,6 +526,7 @@ static int cmp_dev_name(const struct rte_device *dev, const void *_name)
 		 */
 		if (event_cb->active == 0) {
 			TAILQ_REMOVE(&dev_event_cbs, event_cb, next);
+			free(event_cb->dev_name);
 			free(event_cb);
 			ret++;
 		} else {
-- 
1.8.3.1



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

* [dpdk-dev]  [PATCH v4 2/3] eal: return error code when failure
  2020-07-03  9:44 [dpdk-dev] [PATCH v4 0/3] fixes for device event wangyunjian
  2020-07-03  9:46 ` [dpdk-dev] [PATCH v4 1/3] eal: fix memory leak when removing event_cb wangyunjian
@ 2020-07-03  9:46 ` wangyunjian
  2020-07-03  9:46 ` [dpdk-dev] [PATCH v4 3/3] eal: fix a wrong returned value when callback exists wangyunjian
  2 siblings, 0 replies; 6+ messages in thread
From: wangyunjian @ 2020-07-03  9:46 UTC (permalink / raw)
  To: dev; +Cc: jia.guo, jerry.lilijun, xudingke, Yunjian Wang, stable

From: Yunjian Wang <wangyunjian@huawei.com>

Fix return value, using -EAGAIN instead of 0 when the callback is busy
and using -ENOENT instead of 0 when the callback is not found.

Fixes: a753e53d517b ("eal: add device event monitor framework")
Cc: stable@dpdk.org

Acked-by: Jeff Guo <jia.guo@intel.com>
Signed-off-by: Yunjian Wang <wangyunjian@huawei.com>
---
 lib/librte_eal/common/eal_common_dev.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/lib/librte_eal/common/eal_common_dev.c b/lib/librte_eal/common/eal_common_dev.c
index 363a2ca..d990bfd 100644
--- a/lib/librte_eal/common/eal_common_dev.c
+++ b/lib/librte_eal/common/eal_common_dev.c
@@ -530,9 +530,15 @@ static int cmp_dev_name(const struct rte_device *dev, const void *_name)
 			free(event_cb);
 			ret++;
 		} else {
-			continue;
+			ret = -EAGAIN;
+			break;
 		}
 	}
+
+	/* this callback is not be registered */
+	if (ret == 0)
+		ret = -ENOENT;
+
 	rte_spinlock_unlock(&dev_event_lock);
 	return ret;
 }
-- 
1.8.3.1



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

* [dpdk-dev] [PATCH v4 3/3] eal: fix a wrong returned value when callback exists
  2020-07-03  9:44 [dpdk-dev] [PATCH v4 0/3] fixes for device event wangyunjian
  2020-07-03  9:46 ` [dpdk-dev] [PATCH v4 1/3] eal: fix memory leak when removing event_cb wangyunjian
  2020-07-03  9:46 ` [dpdk-dev] [PATCH v4 2/3] eal: return error code when failure wangyunjian
@ 2020-07-03  9:46 ` wangyunjian
  2 siblings, 0 replies; 6+ messages in thread
From: wangyunjian @ 2020-07-03  9:46 UTC (permalink / raw)
  To: dev; +Cc: jia.guo, jerry.lilijun, xudingke, Yunjian Wang, stable

From: Yunjian Wang <wangyunjian@huawei.com>

We should return an error value, when the callback is already exist.

Fixes: a753e53d517b ("eal: add device event monitor framework")
Cc: stable@dpdk.org

Signed-off-by: Yunjian Wang <wangyunjian@huawei.com>
---
 lib/librte_eal/common/eal_common_dev.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/lib/librte_eal/common/eal_common_dev.c b/lib/librte_eal/common/eal_common_dev.c
index d990bfd..2a097aa 100644
--- a/lib/librte_eal/common/eal_common_dev.c
+++ b/lib/librte_eal/common/eal_common_dev.c
@@ -431,7 +431,7 @@ static int cmp_dev_name(const struct rte_device *dev, const void *_name)
 				void *cb_arg)
 {
 	struct dev_event_callback *event_cb;
-	int ret;
+	int ret = 0;
 
 	if (!cb_fn)
 		return -EINVAL;
@@ -484,7 +484,7 @@ static int cmp_dev_name(const struct rte_device *dev, const void *_name)
 	}
 
 	rte_spinlock_unlock(&dev_event_lock);
-	return 0;
+	return ret;
 error:
 	free(event_cb);
 	rte_spinlock_unlock(&dev_event_lock);
-- 
1.8.3.1



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

* Re: [dpdk-dev] [PATCH v4 1/3] eal: fix memory leak when removing event_cb
  2020-07-03  9:46 ` [dpdk-dev] [PATCH v4 1/3] eal: fix memory leak when removing event_cb wangyunjian
@ 2020-07-29 11:47   ` wangyunjian
  2020-07-30  2:57     ` Jeff Guo
  0 siblings, 1 reply; 6+ messages in thread
From: wangyunjian @ 2020-07-29 11:47 UTC (permalink / raw)
  To: dev; +Cc: jia.guo, Lilijun (Jerry), xudingke, stable

Ping for review.

Thanks,
Yunjian

> -----Original Message-----
> From: wangyunjian
> Sent: Friday, July 3, 2020 5:46 PM
> To: dev@dpdk.org
> Cc: jia.guo@intel.com; Lilijun (Jerry) <jerry.lilijun@huawei.com>; xudingke
> <xudingke@huawei.com>; wangyunjian <wangyunjian@huawei.com>;
> stable@dpdk.org
> Subject: [dpdk-dev] [PATCH v4 1/3] eal: fix memory leak when removing
> event_cb
> 
> From: Yunjian Wang <wangyunjian@huawei.com>
> 
> The event_cb->dev_name is not freed when freeing event_cb, and this causes a
> memory leak.
> 
> Fixes: a753e53d517b ("eal: add device event monitor framework")
> Cc: stable@dpdk.org
> 
> Signed-off-by: Yunjian Wang <wangyunjian@huawei.com>
> ---
>  lib/librte_eal/common/eal_common_dev.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/lib/librte_eal/common/eal_common_dev.c
> b/lib/librte_eal/common/eal_common_dev.c
> index 9e4f09d..363a2ca 100644
> --- a/lib/librte_eal/common/eal_common_dev.c
> +++ b/lib/librte_eal/common/eal_common_dev.c
> @@ -526,6 +526,7 @@ static int cmp_dev_name(const struct rte_device *dev,
> const void *_name)
>  		 */
>  		if (event_cb->active == 0) {
>  			TAILQ_REMOVE(&dev_event_cbs, event_cb, next);
> +			free(event_cb->dev_name);
>  			free(event_cb);
>  			ret++;
>  		} else {
> --
> 1.8.3.1
> 


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

* Re: [dpdk-dev] [PATCH v4 1/3] eal: fix memory leak when removing event_cb
  2020-07-29 11:47   ` wangyunjian
@ 2020-07-30  2:57     ` Jeff Guo
  0 siblings, 0 replies; 6+ messages in thread
From: Jeff Guo @ 2020-07-30  2:57 UTC (permalink / raw)
  To: wangyunjian, dev; +Cc: Lilijun (Jerry), xudingke, stable

hi, yunjian

The patch seems no problem, but when you update your patch, please add 
other guys who had comment on your patch and maintainer to see if they have

other opinion, and --in-reply-to is also helpful for patch review, thanks.

On 7/29/2020 7:47 PM, wangyunjian wrote:
> Ping for review.
>
> Thanks,
> Yunjian
>
>> -----Original Message-----
>> From: wangyunjian
>> Sent: Friday, July 3, 2020 5:46 PM
>> To: dev@dpdk.org
>> Cc: jia.guo@intel.com; Lilijun (Jerry) <jerry.lilijun@huawei.com>; xudingke
>> <xudingke@huawei.com>; wangyunjian <wangyunjian@huawei.com>;
>> stable@dpdk.org
>> Subject: [dpdk-dev] [PATCH v4 1/3] eal: fix memory leak when removing
>> event_cb
>>
>> From: Yunjian Wang <wangyunjian@huawei.com>
>>
>> The event_cb->dev_name is not freed when freeing event_cb, and this causes a
>> memory leak.
>>
>> Fixes: a753e53d517b ("eal: add device event monitor framework")
>> Cc: stable@dpdk.org
>>
>> Signed-off-by: Yunjian Wang <wangyunjian@huawei.com>
>> ---
>>   lib/librte_eal/common/eal_common_dev.c | 1 +
>>   1 file changed, 1 insertion(+)
>>
>> diff --git a/lib/librte_eal/common/eal_common_dev.c
>> b/lib/librte_eal/common/eal_common_dev.c
>> index 9e4f09d..363a2ca 100644
>> --- a/lib/librte_eal/common/eal_common_dev.c
>> +++ b/lib/librte_eal/common/eal_common_dev.c
>> @@ -526,6 +526,7 @@ static int cmp_dev_name(const struct rte_device *dev,
>> const void *_name)
>>   		 */
>>   		if (event_cb->active == 0) {
>>   			TAILQ_REMOVE(&dev_event_cbs, event_cb, next);
>> +			free(event_cb->dev_name);
>>   			free(event_cb);
>>   			ret++;
>>   		} else {
>> --
>> 1.8.3.1


Acked-by: Jeff Guo <jia.guo@intel.com>


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

end of thread, back to index

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-07-03  9:44 [dpdk-dev] [PATCH v4 0/3] fixes for device event wangyunjian
2020-07-03  9:46 ` [dpdk-dev] [PATCH v4 1/3] eal: fix memory leak when removing event_cb wangyunjian
2020-07-29 11:47   ` wangyunjian
2020-07-30  2:57     ` Jeff Guo
2020-07-03  9:46 ` [dpdk-dev] [PATCH v4 2/3] eal: return error code when failure wangyunjian
2020-07-03  9:46 ` [dpdk-dev] [PATCH v4 3/3] eal: fix a wrong returned value when callback exists wangyunjian

DPDK patches and discussions

Archives are clonable:
	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


Newsgroup available over NNTP:
	nntp://inbox.dpdk.org/inbox.dpdk.dev


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