* [dpdk-dev] [PATCH] af_packet: Fix some klocwork errors
@ 2015-02-26 6:42 Ouyang Changchun
2015-02-26 8:44 ` Pawel Wodkowski
2015-02-27 0:49 ` [dpdk-dev] [PATCH v2] " Ouyang Changchun
0 siblings, 2 replies; 22+ messages in thread
From: Ouyang Changchun @ 2015-02-26 6:42 UTC (permalink / raw)
To: dev
Fix possible memory leak issue: free kvlist before return;
Fix possible resource lost issue: close qssockfd before return;
Signed-off-by: Changchun Ouyang <changchun.ouyang@intel.com>
---
lib/librte_pmd_af_packet/rte_eth_af_packet.c | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/lib/librte_pmd_af_packet/rte_eth_af_packet.c b/lib/librte_pmd_af_packet/rte_eth_af_packet.c
index 80e9bdf..cf8f4fa 100644
--- a/lib/librte_pmd_af_packet/rte_eth_af_packet.c
+++ b/lib/librte_pmd_af_packet/rte_eth_af_packet.c
@@ -694,6 +694,8 @@ error:
}
rte_free(*internals);
}
+ if (qsockfd != -1)
+ close(qsockfd);
return -1;
}
@@ -822,16 +824,21 @@ rte_pmd_af_packet_devinit(const char *name, const char *params)
ret = rte_kvargs_process(kvlist, ETH_AF_PACKET_IFACE_ARG,
&open_packet_iface, &sockfd);
- if (ret < 0)
+ if (ret < 0) {
+ rte_kvargs_free(kvlist);
return -1;
+ }
}
ret = rte_eth_from_packet(name, &sockfd, numa_node, kvlist);
close(sockfd); /* no longer needed */
- if (ret < 0)
+ if (ret < 0) {
+ rte_kvargs_free(kvlist);
return -1;
+ }
+ rte_kvargs_free(kvlist);
return 0;
}
--
1.8.4.2
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [dpdk-dev] [PATCH] af_packet: Fix some klocwork errors
2015-02-26 6:42 [dpdk-dev] [PATCH] af_packet: Fix some klocwork errors Ouyang Changchun
@ 2015-02-26 8:44 ` Pawel Wodkowski
2015-02-27 0:49 ` [dpdk-dev] [PATCH v2] " Ouyang Changchun
1 sibling, 0 replies; 22+ messages in thread
From: Pawel Wodkowski @ 2015-02-26 8:44 UTC (permalink / raw)
To: dev
On 2015-02-26 07:42, Ouyang Changchun wrote:
> Fix possible memory leak issue: free kvlist before return;
> Fix possible resource lost issue: close qssockfd before return;
>
> Signed-off-by: Changchun Ouyang <changchun.ouyang@intel.com>
> ---
> lib/librte_pmd_af_packet/rte_eth_af_packet.c | 11 +++++++++--
> 1 file changed, 9 insertions(+), 2 deletions(-)
>
> diff --git a/lib/librte_pmd_af_packet/rte_eth_af_packet.c b/lib/librte_pmd_af_packet/rte_eth_af_packet.c
> index 80e9bdf..cf8f4fa 100644
> --- a/lib/librte_pmd_af_packet/rte_eth_af_packet.c
> +++ b/lib/librte_pmd_af_packet/rte_eth_af_packet.c
> @@ -694,6 +694,8 @@ error:
> }
> rte_free(*internals);
> }
> + if (qsockfd != -1)
> + close(qsockfd);
> return -1;
> }
>
> @@ -822,16 +824,21 @@ rte_pmd_af_packet_devinit(const char *name, const char *params)
>
> ret = rte_kvargs_process(kvlist, ETH_AF_PACKET_IFACE_ARG,
> &open_packet_iface, &sockfd);
> - if (ret < 0)
> + if (ret < 0) {
> + rte_kvargs_free(kvlist);
> return -1;
> + }
> }
>
> ret = rte_eth_from_packet(name, &sockfd, numa_node, kvlist);
> close(sockfd); /* no longer needed */
>
> - if (ret < 0)
> + if (ret < 0) {
> + rte_kvargs_free(kvlist);
> return -1;
> + }
>
> + rte_kvargs_free(kvlist);
> return 0;
> }
>
>
This patch is correct but it would be good to rework it to have common
error exit point like in rte_pmd_init_internals() function you changed.
--
Pawel
^ permalink raw reply [flat|nested] 22+ messages in thread
* [dpdk-dev] [PATCH v2] af_packet: Fix some klocwork errors
2015-02-26 6:42 [dpdk-dev] [PATCH] af_packet: Fix some klocwork errors Ouyang Changchun
2015-02-26 8:44 ` Pawel Wodkowski
@ 2015-02-27 0:49 ` Ouyang Changchun
2015-02-27 14:04 ` Neil Horman
2015-02-28 1:27 ` [dpdk-dev] [PATCH v3] " Ouyang Changchun
1 sibling, 2 replies; 22+ messages in thread
From: Ouyang Changchun @ 2015-02-27 0:49 UTC (permalink / raw)
To: dev
Fix possible memory leak issue: free kvlist before return;
Fix possible resource lost issue: close qssockfd before return;
Signed-off-by: Changchun Ouyang <changchun.ouyang@intel.com>
---
change in v2:
- Make the error exit point a common path.
lib/librte_pmd_af_packet/rte_eth_af_packet.c | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/lib/librte_pmd_af_packet/rte_eth_af_packet.c b/lib/librte_pmd_af_packet/rte_eth_af_packet.c
index 80e9bdf..c675724 100644
--- a/lib/librte_pmd_af_packet/rte_eth_af_packet.c
+++ b/lib/librte_pmd_af_packet/rte_eth_af_packet.c
@@ -694,6 +694,8 @@ error:
}
rte_free(*internals);
}
+ if (qsockfd != -1)
+ close(qsockfd);
return -1;
}
@@ -823,16 +825,21 @@ rte_pmd_af_packet_devinit(const char *name, const char *params)
ret = rte_kvargs_process(kvlist, ETH_AF_PACKET_IFACE_ARG,
&open_packet_iface, &sockfd);
if (ret < 0)
- return -1;
+ goto error;
}
ret = rte_eth_from_packet(name, &sockfd, numa_node, kvlist);
close(sockfd); /* no longer needed */
if (ret < 0)
- return -1;
+ goto error;
+ rte_kvargs_free(kvlist);
return 0;
+
+error:
+ rte_kvargs_free(kvlist);
+ return -1;
}
static struct rte_driver pmd_af_packet_drv = {
--
1.8.4.2
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [dpdk-dev] [PATCH v2] af_packet: Fix some klocwork errors
2015-02-27 0:49 ` [dpdk-dev] [PATCH v2] " Ouyang Changchun
@ 2015-02-27 14:04 ` Neil Horman
2015-02-28 0:51 ` Ouyang, Changchun
2015-02-28 1:27 ` [dpdk-dev] [PATCH v3] " Ouyang Changchun
1 sibling, 1 reply; 22+ messages in thread
From: Neil Horman @ 2015-02-27 14:04 UTC (permalink / raw)
To: Ouyang Changchun; +Cc: dev
On Fri, Feb 27, 2015 at 08:49:13AM +0800, Ouyang Changchun wrote:
> Fix possible memory leak issue: free kvlist before return;
> Fix possible resource lost issue: close qssockfd before return;
>
> Signed-off-by: Changchun Ouyang <changchun.ouyang@intel.com>
> ---
> change in v2:
> - Make the error exit point a common path.
>
> lib/librte_pmd_af_packet/rte_eth_af_packet.c | 11 +++++++++--
> 1 file changed, 9 insertions(+), 2 deletions(-)
>
> diff --git a/lib/librte_pmd_af_packet/rte_eth_af_packet.c b/lib/librte_pmd_af_packet/rte_eth_af_packet.c
> index 80e9bdf..c675724 100644
> --- a/lib/librte_pmd_af_packet/rte_eth_af_packet.c
> +++ b/lib/librte_pmd_af_packet/rte_eth_af_packet.c
> @@ -694,6 +694,8 @@ error:
> }
> rte_free(*internals);
> }
> + if (qsockfd != -1)
> + close(qsockfd);
This is insufficient. qsockfd is a loop index that is reassigned for each tx
queue we have. In the error path you need to do this, and loop through the tx
queues, closing each tx_queue->sockfd.
> return -1;
> }
>
> @@ -823,16 +825,21 @@ rte_pmd_af_packet_devinit(const char *name, const char *params)
> ret = rte_kvargs_process(kvlist, ETH_AF_PACKET_IFACE_ARG,
> &open_packet_iface, &sockfd);
> if (ret < 0)
> - return -1;
> + goto error;
> }
>
> ret = rte_eth_from_packet(name, &sockfd, numa_node, kvlist);
> close(sockfd); /* no longer needed */
>
> if (ret < 0)
> - return -1;
> + goto error;
>
> + rte_kvargs_free(kvlist);
> return 0;
> +
> +error:
> + rte_kvargs_free(kvlist);
> + return -1;
> }
>
> static struct rte_driver pmd_af_packet_drv = {
> --
> 1.8.4.2
>
>
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [dpdk-dev] [PATCH v2] af_packet: Fix some klocwork errors
2015-02-27 14:04 ` Neil Horman
@ 2015-02-28 0:51 ` Ouyang, Changchun
0 siblings, 0 replies; 22+ messages in thread
From: Ouyang, Changchun @ 2015-02-28 0:51 UTC (permalink / raw)
To: Neil Horman; +Cc: dev
> -----Original Message-----
> From: Neil Horman [mailto:nhorman@tuxdriver.com]
> Sent: Friday, February 27, 2015 10:05 PM
> To: Ouyang, Changchun
> Cc: dev@dpdk.org
> Subject: Re: [dpdk-dev] [PATCH v2] af_packet: Fix some klocwork errors
>
> On Fri, Feb 27, 2015 at 08:49:13AM +0800, Ouyang Changchun wrote:
> > Fix possible memory leak issue: free kvlist before return; Fix
> > possible resource lost issue: close qssockfd before return;
> >
> > Signed-off-by: Changchun Ouyang <changchun.ouyang@intel.com>
> > ---
> > change in v2:
> > - Make the error exit point a common path.
> >
> > lib/librte_pmd_af_packet/rte_eth_af_packet.c | 11 +++++++++--
> > 1 file changed, 9 insertions(+), 2 deletions(-)
> >
> > diff --git a/lib/librte_pmd_af_packet/rte_eth_af_packet.c
> > b/lib/librte_pmd_af_packet/rte_eth_af_packet.c
> > index 80e9bdf..c675724 100644
> > --- a/lib/librte_pmd_af_packet/rte_eth_af_packet.c
> > +++ b/lib/librte_pmd_af_packet/rte_eth_af_packet.c
> > @@ -694,6 +694,8 @@ error:
> > }
> > rte_free(*internals);
> > }
> > + if (qsockfd != -1)
> > + close(qsockfd);
> This is insufficient. qsockfd is a loop index that is reassigned for each tx
> queue we have. In the error path you need to do this, and loop through the
> tx queues, closing each tx_queue->sockfd.
>
Thanks, will have a v3 to resolve it.
Changchun
^ permalink raw reply [flat|nested] 22+ messages in thread
* [dpdk-dev] [PATCH v3] af_packet: Fix some klocwork errors
2015-02-27 0:49 ` [dpdk-dev] [PATCH v2] " Ouyang Changchun
2015-02-27 14:04 ` Neil Horman
@ 2015-02-28 1:27 ` Ouyang Changchun
2015-03-09 3:49 ` [dpdk-dev] [PATCH v4] " Ouyang Changchun
1 sibling, 1 reply; 22+ messages in thread
From: Ouyang Changchun @ 2015-02-28 1:27 UTC (permalink / raw)
To: dev
Fix possible memory leak issue: free kvlist before return;
Fix possible resource lost issue: close qssockfd before return;
Signed-off-by: Changchun Ouyang <changchun.ouyang@intel.com>
---
Change in v3:
- Also close sockets for all queues.
Change in v2:
- Make the error exit point a common path.
lib/librte_pmd_af_packet/rte_eth_af_packet.c | 14 ++++++++++++--
1 file changed, 12 insertions(+), 2 deletions(-)
diff --git a/lib/librte_pmd_af_packet/rte_eth_af_packet.c b/lib/librte_pmd_af_packet/rte_eth_af_packet.c
index 80e9bdf..eb2b67b 100644
--- a/lib/librte_pmd_af_packet/rte_eth_af_packet.c
+++ b/lib/librte_pmd_af_packet/rte_eth_af_packet.c
@@ -691,9 +691,14 @@ error:
rte_free((*internals)->rx_queue[q].rd);
if ((*internals)->tx_queue[q].rd)
rte_free((*internals)->tx_queue[q].rd);
+ if (((*internals)->rx_queue[q].sockfd != -1) &&
+ ((*internals)->rx_queue[q].sockfd != qsockfd))
+ close((*internals)->rx_queue[q].sockfd);
}
rte_free(*internals);
}
+ if (qsockfd != -1)
+ close(qsockfd);
return -1;
}
@@ -823,16 +828,21 @@ rte_pmd_af_packet_devinit(const char *name, const char *params)
ret = rte_kvargs_process(kvlist, ETH_AF_PACKET_IFACE_ARG,
&open_packet_iface, &sockfd);
if (ret < 0)
- return -1;
+ goto error;
}
ret = rte_eth_from_packet(name, &sockfd, numa_node, kvlist);
close(sockfd); /* no longer needed */
if (ret < 0)
- return -1;
+ goto error;
+ rte_kvargs_free(kvlist);
return 0;
+
+error:
+ rte_kvargs_free(kvlist);
+ return -1;
}
static struct rte_driver pmd_af_packet_drv = {
--
1.8.4.2
^ permalink raw reply [flat|nested] 22+ messages in thread
* [dpdk-dev] [PATCH v4] af_packet: Fix some klocwork errors
2015-02-28 1:27 ` [dpdk-dev] [PATCH v3] " Ouyang Changchun
@ 2015-03-09 3:49 ` Ouyang Changchun
2015-03-09 6:38 ` Qiu, Michael
2015-03-09 8:58 ` [dpdk-dev] [PATCH v5] " Ouyang Changchun
0 siblings, 2 replies; 22+ messages in thread
From: Ouyang Changchun @ 2015-03-09 3:49 UTC (permalink / raw)
To: dev
Fix possible memory leak issue: free kvlist before return;
Fix possible resource lost issue: close qssockfd before return;
Signed-off-by: Changchun Ouyang <changchun.ouyang@intel.com>
---
Change in v4:
- Check sockfd in internals->rx_queue against 0.
Change in v3:
- Also close sockets for all queues.
Change in v2:
- Make the error exit point a common path.
lib/librte_pmd_af_packet/rte_eth_af_packet.c | 14 ++++++++++++--
1 file changed, 12 insertions(+), 2 deletions(-)
diff --git a/lib/librte_pmd_af_packet/rte_eth_af_packet.c b/lib/librte_pmd_af_packet/rte_eth_af_packet.c
index 80e9bdf..acdf408 100644
--- a/lib/librte_pmd_af_packet/rte_eth_af_packet.c
+++ b/lib/librte_pmd_af_packet/rte_eth_af_packet.c
@@ -691,9 +691,14 @@ error:
rte_free((*internals)->rx_queue[q].rd);
if ((*internals)->tx_queue[q].rd)
rte_free((*internals)->tx_queue[q].rd);
+ if (((*internals)->rx_queue[q].sockfd != 0) &&
+ ((*internals)->rx_queue[q].sockfd != qsockfd))
+ close((*internals)->rx_queue[q].sockfd);
}
rte_free(*internals);
}
+ if (qsockfd != -1)
+ close(qsockfd);
return -1;
}
@@ -823,16 +828,21 @@ rte_pmd_af_packet_devinit(const char *name, const char *params)
ret = rte_kvargs_process(kvlist, ETH_AF_PACKET_IFACE_ARG,
&open_packet_iface, &sockfd);
if (ret < 0)
- return -1;
+ goto error;
}
ret = rte_eth_from_packet(name, &sockfd, numa_node, kvlist);
close(sockfd); /* no longer needed */
if (ret < 0)
- return -1;
+ goto error;
+ rte_kvargs_free(kvlist);
return 0;
+
+error:
+ rte_kvargs_free(kvlist);
+ return -1;
}
static struct rte_driver pmd_af_packet_drv = {
--
1.8.4.2
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [dpdk-dev] [PATCH v4] af_packet: Fix some klocwork errors
2015-03-09 3:49 ` [dpdk-dev] [PATCH v4] " Ouyang Changchun
@ 2015-03-09 6:38 ` Qiu, Michael
2015-03-09 8:47 ` Ouyang, Changchun
2015-03-09 8:58 ` [dpdk-dev] [PATCH v5] " Ouyang Changchun
1 sibling, 1 reply; 22+ messages in thread
From: Qiu, Michael @ 2015-03-09 6:38 UTC (permalink / raw)
To: Ouyang, Changchun, dev
On 3/9/2015 11:49 AM, Ouyang Changchun wrote:
> Fix possible memory leak issue: free kvlist before return;
> Fix possible resource lost issue: close qssockfd before return;
>
> Signed-off-by: Changchun Ouyang <changchun.ouyang@intel.com>
> ---
> Change in v4:
> - Check sockfd in internals->rx_queue against 0.
>
> Change in v3:
> - Also close sockets for all queues.
>
> Change in v2:
> - Make the error exit point a common path.
>
> lib/librte_pmd_af_packet/rte_eth_af_packet.c | 14 ++++++++++++--
> 1 file changed, 12 insertions(+), 2 deletions(-)
>
> diff --git a/lib/librte_pmd_af_packet/rte_eth_af_packet.c b/lib/librte_pmd_af_packet/rte_eth_af_packet.c
> index 80e9bdf..acdf408 100644
> --- a/lib/librte_pmd_af_packet/rte_eth_af_packet.c
> +++ b/lib/librte_pmd_af_packet/rte_eth_af_packet.c
> @@ -691,9 +691,14 @@ error:
> rte_free((*internals)->rx_queue[q].rd);
> if ((*internals)->tx_queue[q].rd)
> rte_free((*internals)->tx_queue[q].rd);
> + if (((*internals)->rx_queue[q].sockfd != 0) &&
> + ((*internals)->rx_queue[q].sockfd != qsockfd))
> + close((*internals)->rx_queue[q].sockfd);
> }
> rte_free(*internals);
> }
> + if (qsockfd != -1)
Hi, Ouyang
qsockfd was first initialized:
for (q = 0; q < nb_queues; q++) {
/* Open an AF_PACKET socket for this queue... */
qsockfd = socket(AF_PACKET, SOCK_RAW, htons(ETH_P_ALL));
What will happen if gets an error before here, is there any issue? I
think better to initialize it when declare it.
Thanks,
Michael
> + close(qsockfd);
> return -1;
> }
>
> @@ -823,16 +828,21 @@ rte_pmd_af_packet_devinit(const char *name, const char *params)
> ret = rte_kvargs_process(kvlist, ETH_AF_PACKET_IFACE_ARG,
> &open_packet_iface, &sockfd);
> if (ret < 0)
> - return -1;
> + goto error;
> }
>
> ret = rte_eth_from_packet(name, &sockfd, numa_node, kvlist);
> close(sockfd); /* no longer needed */
>
> if (ret < 0)
> - return -1;
> + goto error;
>
> + rte_kvargs_free(kvlist);
> return 0;
> +
> +error:
> + rte_kvargs_free(kvlist);
> + return -1;
> }
>
> static struct rte_driver pmd_af_packet_drv = {
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [dpdk-dev] [PATCH v4] af_packet: Fix some klocwork errors
2015-03-09 6:38 ` Qiu, Michael
@ 2015-03-09 8:47 ` Ouyang, Changchun
0 siblings, 0 replies; 22+ messages in thread
From: Ouyang, Changchun @ 2015-03-09 8:47 UTC (permalink / raw)
To: Qiu, Michael, dev
Hi Michael,
> -----Original Message-----
> From: Qiu, Michael
> Sent: Monday, March 9, 2015 2:39 PM
> To: Ouyang, Changchun; dev@dpdk.org
> Subject: Re: [dpdk-dev] [PATCH v4] af_packet: Fix some klocwork errors
>
> On 3/9/2015 11:49 AM, Ouyang Changchun wrote:
> > Fix possible memory leak issue: free kvlist before return; Fix
> > possible resource lost issue: close qssockfd before return;
> >
> > Signed-off-by: Changchun Ouyang <changchun.ouyang@intel.com>
> > ---
> > Change in v4:
> > - Check sockfd in internals->rx_queue against 0.
> >
> > Change in v3:
> > - Also close sockets for all queues.
> >
> > Change in v2:
> > - Make the error exit point a common path.
> >
> > lib/librte_pmd_af_packet/rte_eth_af_packet.c | 14 ++++++++++++--
> > 1 file changed, 12 insertions(+), 2 deletions(-)
> >
> > diff --git a/lib/librte_pmd_af_packet/rte_eth_af_packet.c
> > b/lib/librte_pmd_af_packet/rte_eth_af_packet.c
> > index 80e9bdf..acdf408 100644
> > --- a/lib/librte_pmd_af_packet/rte_eth_af_packet.c
> > +++ b/lib/librte_pmd_af_packet/rte_eth_af_packet.c
> > @@ -691,9 +691,14 @@ error:
> > rte_free((*internals)->rx_queue[q].rd);
> > if ((*internals)->tx_queue[q].rd)
> > rte_free((*internals)->tx_queue[q].rd);
> > + if (((*internals)->rx_queue[q].sockfd != 0) &&
> > + ((*internals)->rx_queue[q].sockfd !=
> qsockfd))
> > + close((*internals)->rx_queue[q].sockfd);
> > }
> > rte_free(*internals);
> > }
> > + if (qsockfd != -1)
>
> Hi, Ouyang
>
> qsockfd was first initialized:
> for (q = 0; q < nb_queues; q++) {
> /* Open an AF_PACKET socket for this queue... */
> qsockfd = socket(AF_PACKET, SOCK_RAW, htons(ETH_P_ALL));
>
> What will happen if gets an error before here, is there any issue? I think
> better to initialize it when declare it.
>
Make sense, will make next version to resolve it
Thanks
Changchun
^ permalink raw reply [flat|nested] 22+ messages in thread
* [dpdk-dev] [PATCH v5] af_packet: Fix some klocwork errors
2015-03-09 3:49 ` [dpdk-dev] [PATCH v4] " Ouyang Changchun
2015-03-09 6:38 ` Qiu, Michael
@ 2015-03-09 8:58 ` Ouyang Changchun
2015-03-09 19:25 ` John W. Linville
2015-03-10 3:29 ` [dpdk-dev] [PATCH v6] " Ouyang Changchun
1 sibling, 2 replies; 22+ messages in thread
From: Ouyang Changchun @ 2015-03-09 8:58 UTC (permalink / raw)
To: dev
Fix possible memory leak issue: free kvlist before return;
Fix possible resource lost issue: close qssockfd before return;
Signed-off-by: Changchun Ouyang <changchun.ouyang@intel.com>
---
Change in v5:
- Initialize qsockfd with -1;
Change in v4:
- Check sockfd in internals->rx_queue against 0.
Change in v3:
- Also close sockets for all queues.
Change in v2:
- Make the error exit point a common path.
lib/librte_pmd_af_packet/rte_eth_af_packet.c | 17 ++++++++++++++---
1 file changed, 14 insertions(+), 3 deletions(-)
diff --git a/lib/librte_pmd_af_packet/rte_eth_af_packet.c b/lib/librte_pmd_af_packet/rte_eth_af_packet.c
index 80e9bdf..2a27ebc 100644
--- a/lib/librte_pmd_af_packet/rte_eth_af_packet.c
+++ b/lib/librte_pmd_af_packet/rte_eth_af_packet.c
@@ -442,7 +442,8 @@ rte_pmd_init_internals(const char *name,
struct tpacket_req *req;
struct pkt_rx_queue *rx_queue;
struct pkt_tx_queue *tx_queue;
- int rc, qsockfd, tpver, discard;
+ int rc, tpver, discard;
+ int qsockfd = -1;
unsigned int i, q, rdsize;
int fanout_arg __rte_unused, bypass __rte_unused;
@@ -691,9 +692,14 @@ error:
rte_free((*internals)->rx_queue[q].rd);
if ((*internals)->tx_queue[q].rd)
rte_free((*internals)->tx_queue[q].rd);
+ if (((*internals)->rx_queue[q].sockfd != 0) &&
+ ((*internals)->rx_queue[q].sockfd != qsockfd))
+ close((*internals)->rx_queue[q].sockfd);
}
rte_free(*internals);
}
+ if (qsockfd != -1)
+ close(qsockfd);
return -1;
}
@@ -823,16 +829,21 @@ rte_pmd_af_packet_devinit(const char *name, const char *params)
ret = rte_kvargs_process(kvlist, ETH_AF_PACKET_IFACE_ARG,
&open_packet_iface, &sockfd);
if (ret < 0)
- return -1;
+ goto error;
}
ret = rte_eth_from_packet(name, &sockfd, numa_node, kvlist);
close(sockfd); /* no longer needed */
if (ret < 0)
- return -1;
+ goto error;
+ rte_kvargs_free(kvlist);
return 0;
+
+error:
+ rte_kvargs_free(kvlist);
+ return -1;
}
static struct rte_driver pmd_af_packet_drv = {
--
1.8.4.2
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [dpdk-dev] [PATCH v5] af_packet: Fix some klocwork errors
2015-03-09 8:58 ` [dpdk-dev] [PATCH v5] " Ouyang Changchun
@ 2015-03-09 19:25 ` John W. Linville
2015-03-10 3:29 ` [dpdk-dev] [PATCH v6] " Ouyang Changchun
1 sibling, 0 replies; 22+ messages in thread
From: John W. Linville @ 2015-03-09 19:25 UTC (permalink / raw)
To: Ouyang Changchun; +Cc: dev
On Mon, Mar 09, 2015 at 04:58:11PM +0800, Ouyang Changchun wrote:
> Fix possible memory leak issue: free kvlist before return;
> Fix possible resource lost issue: close qssockfd before return;
>
> Signed-off-by: Changchun Ouyang <changchun.ouyang@intel.com>
> ---
> Change in v5:
> - Initialize qsockfd with -1;
>
> Change in v4:
> - Check sockfd in internals->rx_queue against 0.
>
> Change in v3:
> - Also close sockets for all queues.
>
> Change in v2:
> - Make the error exit point a common path.
>
> lib/librte_pmd_af_packet/rte_eth_af_packet.c | 17 ++++++++++++++---
> 1 file changed, 14 insertions(+), 3 deletions(-)
>
> diff --git a/lib/librte_pmd_af_packet/rte_eth_af_packet.c b/lib/librte_pmd_af_packet/rte_eth_af_packet.c
> index 80e9bdf..2a27ebc 100644
> --- a/lib/librte_pmd_af_packet/rte_eth_af_packet.c
> +++ b/lib/librte_pmd_af_packet/rte_eth_af_packet.c
> @@ -442,7 +442,8 @@ rte_pmd_init_internals(const char *name,
> struct tpacket_req *req;
> struct pkt_rx_queue *rx_queue;
> struct pkt_tx_queue *tx_queue;
> - int rc, qsockfd, tpver, discard;
> + int rc, tpver, discard;
> + int qsockfd = -1;
> unsigned int i, q, rdsize;
> int fanout_arg __rte_unused, bypass __rte_unused;
>
> @@ -691,9 +692,14 @@ error:
> rte_free((*internals)->rx_queue[q].rd);
> if ((*internals)->tx_queue[q].rd)
> rte_free((*internals)->tx_queue[q].rd);
> + if (((*internals)->rx_queue[q].sockfd != 0) &&
> + ((*internals)->rx_queue[q].sockfd != qsockfd))
> + close((*internals)->rx_queue[q].sockfd);
> }
> rte_free(*internals);
> }
> + if (qsockfd != -1)
> + close(qsockfd);
> return -1;
> }
>
The part above seems fine.
> @@ -823,16 +829,21 @@ rte_pmd_af_packet_devinit(const char *name, const char *params)
> ret = rte_kvargs_process(kvlist, ETH_AF_PACKET_IFACE_ARG,
> &open_packet_iface, &sockfd);
> if (ret < 0)
> - return -1;
> + goto error;
> }
>
> ret = rte_eth_from_packet(name, &sockfd, numa_node, kvlist);
> close(sockfd); /* no longer needed */
>
> if (ret < 0)
> - return -1;
> + goto error;
>
> + rte_kvargs_free(kvlist);
> return 0;
> +
> +error:
> + rte_kvargs_free(kvlist);
> + return -1;
> }
>
> static struct rte_driver pmd_af_packet_drv = {
This seems a bit awkward. How about the following?
@@ -823,16 +829,15 @@ rte_pmd_af_packet_devinit(const char *name, const char *params)
ret = rte_kvargs_process(kvlist, ETH_AF_PACKET_IFACE_ARG,
&open_packet_iface, &sockfd);
if (ret < 0)
- return -1;
+ goto exit;
}
ret = rte_eth_from_packet(name, &sockfd, numa_node, kvlist);
close(sockfd); /* no longer needed */
- if (ret < 0)
- return -1;
-
- return 0;
+exit:
+ rte_kvargs_free(kvlist);
+ return ret;
}
static struct rte_driver pmd_af_packet_drv = {
Does this seem OK to you?
John
--
John W. Linville Someday the world will need a hero, and you
linville@tuxdriver.com might be all we have. Be ready.
^ permalink raw reply [flat|nested] 22+ messages in thread
* [dpdk-dev] [PATCH v6] af_packet: Fix some klocwork errors
2015-03-09 8:58 ` [dpdk-dev] [PATCH v5] " Ouyang Changchun
2015-03-09 19:25 ` John W. Linville
@ 2015-03-10 3:29 ` Ouyang Changchun
2015-03-10 8:36 ` Pawel Wodkowski
2015-03-11 1:34 ` [dpdk-dev] [PATCH v7] " Ouyang Changchun
1 sibling, 2 replies; 22+ messages in thread
From: Ouyang Changchun @ 2015-03-10 3:29 UTC (permalink / raw)
To: dev
Fix possible memory leak issue: free kvlist before return;
Fix possible resource lost issue: close qssockfd before return;
Signed-off-by: Changchun Ouyang <changchun.ouyang@intel.com>
---
Change in v6:
- Refine exit point;
Change in v5:
- Initialize qsockfd with -1;
Change in v4:
- Check sockfd in internals->rx_queue against 0.
Change in v3:
- Also close sockets for all queues.
Change in v2:
- Make the error exit point a common path.
lib/librte_pmd_af_packet/rte_eth_af_packet.c | 26 +++++++++++++++++---------
1 file changed, 17 insertions(+), 9 deletions(-)
diff --git a/lib/librte_pmd_af_packet/rte_eth_af_packet.c b/lib/librte_pmd_af_packet/rte_eth_af_packet.c
index 80e9bdf..c2c0878 100644
--- a/lib/librte_pmd_af_packet/rte_eth_af_packet.c
+++ b/lib/librte_pmd_af_packet/rte_eth_af_packet.c
@@ -442,7 +442,8 @@ rte_pmd_init_internals(const char *name,
struct tpacket_req *req;
struct pkt_rx_queue *rx_queue;
struct pkt_tx_queue *tx_queue;
- int rc, qsockfd, tpver, discard;
+ int rc, tpver, discard;
+ int qsockfd = -1;
unsigned int i, q, rdsize;
int fanout_arg __rte_unused, bypass __rte_unused;
@@ -691,9 +692,14 @@ error:
rte_free((*internals)->rx_queue[q].rd);
if ((*internals)->tx_queue[q].rd)
rte_free((*internals)->tx_queue[q].rd);
+ if (((*internals)->rx_queue[q].sockfd != 0) &&
+ ((*internals)->rx_queue[q].sockfd != qsockfd))
+ close((*internals)->rx_queue[q].sockfd);
}
rte_free(*internals);
}
+ if (qsockfd != -1)
+ close(qsockfd);
return -1;
}
@@ -802,7 +808,7 @@ int
rte_pmd_af_packet_devinit(const char *name, const char *params)
{
unsigned numa_node;
- int ret;
+ int ret = 0;
struct rte_kvargs *kvlist;
int sockfd = -1;
@@ -811,8 +817,10 @@ rte_pmd_af_packet_devinit(const char *name, const char *params)
numa_node = rte_socket_id();
kvlist = rte_kvargs_parse(params, valid_arguments);
- if (kvlist == NULL)
- return -1;
+ if (kvlist == NULL) {
+ ret = -1;
+ goto exit;
+ }
/*
* If iface argument is passed we open the NICs and use them for
@@ -823,16 +831,16 @@ rte_pmd_af_packet_devinit(const char *name, const char *params)
ret = rte_kvargs_process(kvlist, ETH_AF_PACKET_IFACE_ARG,
&open_packet_iface, &sockfd);
if (ret < 0)
- return -1;
+ goto exit;
}
ret = rte_eth_from_packet(name, &sockfd, numa_node, kvlist);
close(sockfd); /* no longer needed */
- if (ret < 0)
- return -1;
-
- return 0;
+exit:
+ if (kvlist != NULL)
+ rte_kvargs_free(kvlist);
+ return ret;
}
static struct rte_driver pmd_af_packet_drv = {
--
1.8.4.2
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [dpdk-dev] [PATCH v6] af_packet: Fix some klocwork errors
2015-03-10 3:29 ` [dpdk-dev] [PATCH v6] " Ouyang Changchun
@ 2015-03-10 8:36 ` Pawel Wodkowski
2015-03-10 8:49 ` Ouyang, Changchun
2015-03-11 1:34 ` [dpdk-dev] [PATCH v7] " Ouyang Changchun
1 sibling, 1 reply; 22+ messages in thread
From: Pawel Wodkowski @ 2015-03-10 8:36 UTC (permalink / raw)
To: Ouyang Changchun, dev
> -
> - return 0;
> +exit:
> + if (kvlist != NULL)
No need for if(). This part was fine previous patch.
> + rte_kvargs_free(kvlist);
> + return ret;
> }
>
> static struct rte_driver pmd_af_packet_drv = {
>
--
Pawel
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [dpdk-dev] [PATCH v6] af_packet: Fix some klocwork errors
2015-03-10 8:36 ` Pawel Wodkowski
@ 2015-03-10 8:49 ` Ouyang, Changchun
2015-03-10 8:59 ` Pawel Wodkowski
2015-03-10 10:19 ` Thomas Monjalon
0 siblings, 2 replies; 22+ messages in thread
From: Ouyang, Changchun @ 2015-03-10 8:49 UTC (permalink / raw)
To: Wodkowski, PawelX, dev
> -----Original Message-----
> From: Wodkowski, PawelX
> Sent: Tuesday, March 10, 2015 4:37 PM
> To: Ouyang, Changchun; dev@dpdk.org
> Cc: linville@tuxdriver.com; nhorman@tuxdriver.com
> Subject: Re: [PATCH v6] af_packet: Fix some klocwork errors
>
> > -
> > - return 0;
> > +exit:
> > + if (kvlist != NULL)
>
> No need for if(). This part was fine previous patch.
>
If kvlist is NULL, no reason to call rte_kvargs_free to free it.
So, adding this test is better.
> > + rte_kvargs_free(kvlist);
> > + return ret;
> > }
> >
> > static struct rte_driver pmd_af_packet_drv = {
> >
>
>
> --
> Pawel
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [dpdk-dev] [PATCH v6] af_packet: Fix some klocwork errors
2015-03-10 8:49 ` Ouyang, Changchun
@ 2015-03-10 8:59 ` Pawel Wodkowski
2015-03-10 10:19 ` Thomas Monjalon
1 sibling, 0 replies; 22+ messages in thread
From: Pawel Wodkowski @ 2015-03-10 8:59 UTC (permalink / raw)
To: Ouyang, Changchun, dev
On 2015-03-10 09:49, Ouyang, Changchun wrote:
>
>
>> -----Original Message-----
>> From: Wodkowski, PawelX
>> Sent: Tuesday, March 10, 2015 4:37 PM
>> To: Ouyang, Changchun; dev@dpdk.org
>> Cc: linville@tuxdriver.com; nhorman@tuxdriver.com
>> Subject: Re: [PATCH v6] af_packet: Fix some klocwork errors
>>
>>> -
>>> - return 0;
>>> +exit:
>>> + if (kvlist != NULL)
>>
>> No need for if(). This part was fine previous patch.
>>
>
> If kvlist is NULL, no reason to call rte_kvargs_free to free it.
> So, adding this test is better.
For programmer convenience and reduce code bloat/obfuscation the same
test is in rte_kvargs_free() (and every other free-like function). If
there is no particular reason for that (ex performance which is not in
this path) checking pointer for NULL value should be avoided before
freeing it.
>
>>> + rte_kvargs_free(kvlist);
>>> + return ret;
>>> }
>>>
>>> static struct rte_driver pmd_af_packet_drv = {
>>>
>>
>>
>> --
>> Pawel
--
Pawel
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [dpdk-dev] [PATCH v6] af_packet: Fix some klocwork errors
2015-03-10 8:49 ` Ouyang, Changchun
2015-03-10 8:59 ` Pawel Wodkowski
@ 2015-03-10 10:19 ` Thomas Monjalon
2015-03-11 1:18 ` Ouyang, Changchun
1 sibling, 1 reply; 22+ messages in thread
From: Thomas Monjalon @ 2015-03-10 10:19 UTC (permalink / raw)
To: Ouyang, Changchun; +Cc: dev
2015-03-10 08:49, Ouyang, Changchun:
> From: Wodkowski, PawelX
> > > + if (kvlist != NULL)
> >
> > No need for if(). This part was fine previous patch.
> >
>
> If kvlist is NULL, no reason to call rte_kvargs_free to free it.
> So, adding this test is better.
No, we don't need to double check.
1/ it's already checked in rte_kvargs_free()
2/ less lines you write, better it is
> > > + rte_kvargs_free(kvlist);
> > > + return ret;
> > > }
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [dpdk-dev] [PATCH v6] af_packet: Fix some klocwork errors
2015-03-10 10:19 ` Thomas Monjalon
@ 2015-03-11 1:18 ` Ouyang, Changchun
0 siblings, 0 replies; 22+ messages in thread
From: Ouyang, Changchun @ 2015-03-11 1:18 UTC (permalink / raw)
To: Thomas Monjalon; +Cc: dev
> -----Original Message-----
> From: Thomas Monjalon [mailto:thomas.monjalon@6wind.com]
> Sent: Tuesday, March 10, 2015 6:20 PM
> To: Ouyang, Changchun
> Cc: dev@dpdk.org; Wodkowski, PawelX
> Subject: Re: [dpdk-dev] [PATCH v6] af_packet: Fix some klocwork errors
>
> 2015-03-10 08:49, Ouyang, Changchun:
> > From: Wodkowski, PawelX
> > > > + if (kvlist != NULL)
> > >
> > > No need for if(). This part was fine previous patch.
> > >
> >
> > If kvlist is NULL, no reason to call rte_kvargs_free to free it.
> > So, adding this test is better.
>
> No, we don't need to double check.
> 1/ it's already checked in rte_kvargs_free() 2/ less lines you write, better it is
>
At least 2 guys vote for removing the check, then 2 vs. 1, you win :-)
Will update it in v7
Thanks for comments!
Changchun
^ permalink raw reply [flat|nested] 22+ messages in thread
* [dpdk-dev] [PATCH v7] af_packet: Fix some klocwork errors
2015-03-10 3:29 ` [dpdk-dev] [PATCH v6] " Ouyang Changchun
2015-03-10 8:36 ` Pawel Wodkowski
@ 2015-03-11 1:34 ` Ouyang Changchun
2015-03-12 10:43 ` Qiu, Michael
1 sibling, 1 reply; 22+ messages in thread
From: Ouyang Changchun @ 2015-03-11 1:34 UTC (permalink / raw)
To: dev
Fix possible memory leak issue: free kvlist before return;
Fix possible resource lost issue: close qssockfd before return;
Signed-off-by: Changchun Ouyang <changchun.ouyang@intel.com>
---
Change in v7:
- Remove unnecessary '!= NULL' check before freeing it;
Change in v6:
- Refine exit point;
Change in v5:
- Initialize qsockfd with -1;
Change in v4:
- Check sockfd in internals->rx_queue against 0;
Change in v3:
- Also close sockets for all queues;
Change in v2:
- Make the error exit point a common path.
lib/librte_pmd_af_packet/rte_eth_af_packet.c | 25 ++++++++++++++++---------
1 file changed, 16 insertions(+), 9 deletions(-)
diff --git a/lib/librte_pmd_af_packet/rte_eth_af_packet.c b/lib/librte_pmd_af_packet/rte_eth_af_packet.c
index 80e9bdf..2ac50ba 100644
--- a/lib/librte_pmd_af_packet/rte_eth_af_packet.c
+++ b/lib/librte_pmd_af_packet/rte_eth_af_packet.c
@@ -442,7 +442,8 @@ rte_pmd_init_internals(const char *name,
struct tpacket_req *req;
struct pkt_rx_queue *rx_queue;
struct pkt_tx_queue *tx_queue;
- int rc, qsockfd, tpver, discard;
+ int rc, tpver, discard;
+ int qsockfd = -1;
unsigned int i, q, rdsize;
int fanout_arg __rte_unused, bypass __rte_unused;
@@ -691,9 +692,14 @@ error:
rte_free((*internals)->rx_queue[q].rd);
if ((*internals)->tx_queue[q].rd)
rte_free((*internals)->tx_queue[q].rd);
+ if (((*internals)->rx_queue[q].sockfd != 0) &&
+ ((*internals)->rx_queue[q].sockfd != qsockfd))
+ close((*internals)->rx_queue[q].sockfd);
}
rte_free(*internals);
}
+ if (qsockfd != -1)
+ close(qsockfd);
return -1;
}
@@ -802,7 +808,7 @@ int
rte_pmd_af_packet_devinit(const char *name, const char *params)
{
unsigned numa_node;
- int ret;
+ int ret = 0;
struct rte_kvargs *kvlist;
int sockfd = -1;
@@ -811,8 +817,10 @@ rte_pmd_af_packet_devinit(const char *name, const char *params)
numa_node = rte_socket_id();
kvlist = rte_kvargs_parse(params, valid_arguments);
- if (kvlist == NULL)
- return -1;
+ if (kvlist == NULL) {
+ ret = -1;
+ goto exit;
+ }
/*
* If iface argument is passed we open the NICs and use them for
@@ -823,16 +831,15 @@ rte_pmd_af_packet_devinit(const char *name, const char *params)
ret = rte_kvargs_process(kvlist, ETH_AF_PACKET_IFACE_ARG,
&open_packet_iface, &sockfd);
if (ret < 0)
- return -1;
+ goto exit;
}
ret = rte_eth_from_packet(name, &sockfd, numa_node, kvlist);
close(sockfd); /* no longer needed */
- if (ret < 0)
- return -1;
-
- return 0;
+exit:
+ rte_kvargs_free(kvlist);
+ return ret;
}
static struct rte_driver pmd_af_packet_drv = {
--
1.8.4.2
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [dpdk-dev] [PATCH v7] af_packet: Fix some klocwork errors
2015-03-11 1:34 ` [dpdk-dev] [PATCH v7] " Ouyang Changchun
@ 2015-03-12 10:43 ` Qiu, Michael
2015-03-12 13:38 ` Neil Horman
0 siblings, 1 reply; 22+ messages in thread
From: Qiu, Michael @ 2015-03-12 10:43 UTC (permalink / raw)
To: Ouyang, Changchun, dev
On 3/11/2015 9:34 AM, Ouyang Changchun wrote:
> Fix possible memory leak issue: free kvlist before return;
> Fix possible resource lost issue: close qssockfd before return;
>
> Signed-off-by: Changchun Ouyang <changchun.ouyang@intel.com>
> ---
> Change in v7:
> - Remove unnecessary '!= NULL' check before freeing it;
>
> Change in v6:
> - Refine exit point;
>
> Change in v5:
> - Initialize qsockfd with -1;
>
> Change in v4:
> - Check sockfd in internals->rx_queue against 0;
>
> Change in v3:
> - Also close sockets for all queues;
>
> Change in v2:
> - Make the error exit point a common path.
Acked-by: Michael Qiu <michael.qiu@intel.com>
> lib/librte_pmd_af_packet/rte_eth_af_packet.c | 25 ++++++++++++++++---------
> 1 file changed, 16 insertions(+), 9 deletions(-)
>
> diff --git a/lib/librte_pmd_af_packet/rte_eth_af_packet.c b/lib/librte_pmd_af_packet/rte_eth_af_packet.c
> index 80e9bdf..2ac50ba 100644
> --- a/lib/librte_pmd_af_packet/rte_eth_af_packet.c
> +++ b/lib/librte_pmd_af_packet/rte_eth_af_packet.c
> @@ -442,7 +442,8 @@ rte_pmd_init_internals(const char *name,
> struct tpacket_req *req;
> struct pkt_rx_queue *rx_queue;
> struct pkt_tx_queue *tx_queue;
> - int rc, qsockfd, tpver, discard;
> + int rc, tpver, discard;
> + int qsockfd = -1;
> unsigned int i, q, rdsize;
> int fanout_arg __rte_unused, bypass __rte_unused;
>
> @@ -691,9 +692,14 @@ error:
> rte_free((*internals)->rx_queue[q].rd);
> if ((*internals)->tx_queue[q].rd)
> rte_free((*internals)->tx_queue[q].rd);
> + if (((*internals)->rx_queue[q].sockfd != 0) &&
> + ((*internals)->rx_queue[q].sockfd != qsockfd))
> + close((*internals)->rx_queue[q].sockfd);
> }
> rte_free(*internals);
> }
> + if (qsockfd != -1)
> + close(qsockfd);
> return -1;
> }
>
> @@ -802,7 +808,7 @@ int
> rte_pmd_af_packet_devinit(const char *name, const char *params)
> {
> unsigned numa_node;
> - int ret;
> + int ret = 0;
> struct rte_kvargs *kvlist;
> int sockfd = -1;
>
> @@ -811,8 +817,10 @@ rte_pmd_af_packet_devinit(const char *name, const char *params)
> numa_node = rte_socket_id();
>
> kvlist = rte_kvargs_parse(params, valid_arguments);
> - if (kvlist == NULL)
> - return -1;
> + if (kvlist == NULL) {
> + ret = -1;
> + goto exit;
> + }
>
> /*
> * If iface argument is passed we open the NICs and use them for
> @@ -823,16 +831,15 @@ rte_pmd_af_packet_devinit(const char *name, const char *params)
> ret = rte_kvargs_process(kvlist, ETH_AF_PACKET_IFACE_ARG,
> &open_packet_iface, &sockfd);
> if (ret < 0)
> - return -1;
> + goto exit;
> }
>
> ret = rte_eth_from_packet(name, &sockfd, numa_node, kvlist);
> close(sockfd); /* no longer needed */
>
> - if (ret < 0)
> - return -1;
> -
> - return 0;
> +exit:
> + rte_kvargs_free(kvlist);
> + return ret;
> }
>
> static struct rte_driver pmd_af_packet_drv = {
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [dpdk-dev] [PATCH v7] af_packet: Fix some klocwork errors
2015-03-12 10:43 ` Qiu, Michael
@ 2015-03-12 13:38 ` Neil Horman
2015-03-12 17:09 ` John W. Linville
0 siblings, 1 reply; 22+ messages in thread
From: Neil Horman @ 2015-03-12 13:38 UTC (permalink / raw)
To: Qiu, Michael; +Cc: dev
On Thu, Mar 12, 2015 at 10:43:24AM +0000, Qiu, Michael wrote:
> On 3/11/2015 9:34 AM, Ouyang Changchun wrote:
> > Fix possible memory leak issue: free kvlist before return;
> > Fix possible resource lost issue: close qssockfd before return;
> >
> > Signed-off-by: Changchun Ouyang <changchun.ouyang@intel.com>
> > ---
> > Change in v7:
> > - Remove unnecessary '!= NULL' check before freeing it;
> >
> > Change in v6:
> > - Refine exit point;
> >
> > Change in v5:
> > - Initialize qsockfd with -1;
> >
> > Change in v4:
> > - Check sockfd in internals->rx_queue against 0;
> >
> > Change in v3:
> > - Also close sockets for all queues;
> >
> > Change in v2:
> > - Make the error exit point a common path.
>
> Acked-by: Michael Qiu <michael.qiu@intel.com>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [dpdk-dev] [PATCH v7] af_packet: Fix some klocwork errors
2015-03-12 13:38 ` Neil Horman
@ 2015-03-12 17:09 ` John W. Linville
2015-03-17 21:34 ` Thomas Monjalon
0 siblings, 1 reply; 22+ messages in thread
From: John W. Linville @ 2015-03-12 17:09 UTC (permalink / raw)
To: Neil Horman; +Cc: dev
On Thu, Mar 12, 2015 at 09:38:46AM -0400, Neil Horman wrote:
> On Thu, Mar 12, 2015 at 10:43:24AM +0000, Qiu, Michael wrote:
> > On 3/11/2015 9:34 AM, Ouyang Changchun wrote:
> > > Fix possible memory leak issue: free kvlist before return;
> > > Fix possible resource lost issue: close qssockfd before return;
> > >
> > > Signed-off-by: Changchun Ouyang <changchun.ouyang@intel.com>
> > > ---
> > > Change in v7:
> > > - Remove unnecessary '!= NULL' check before freeing it;
> > >
> > > Change in v6:
> > > - Refine exit point;
> > >
> > > Change in v5:
> > > - Initialize qsockfd with -1;
> > >
> > > Change in v4:
> > > - Check sockfd in internals->rx_queue against 0;
> > >
> > > Change in v3:
> > > - Also close sockets for all queues;
> > >
> > > Change in v2:
> > > - Make the error exit point a common path.
> >
> > Acked-by: Michael Qiu <michael.qiu@intel.com>
> Acked-by: Neil Horman <nhorman@tuxdriver.com>
Acked-by: John W. Linville <linville@tuxdriver.com>
--
John W. Linville Someday the world will need a hero, and you
linville@tuxdriver.com might be all we have. Be ready.
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [dpdk-dev] [PATCH v7] af_packet: Fix some klocwork errors
2015-03-12 17:09 ` John W. Linville
@ 2015-03-17 21:34 ` Thomas Monjalon
0 siblings, 0 replies; 22+ messages in thread
From: Thomas Monjalon @ 2015-03-17 21:34 UTC (permalink / raw)
To: changchun.ouyang; +Cc: dev
> > > > Fix possible memory leak issue: free kvlist before return;
> > > > Fix possible resource lost issue: close qssockfd before return;
> > > >
> > > > Signed-off-by: Changchun Ouyang <changchun.ouyang@intel.com>
> > > > ---
> > > > Change in v7:
> > > > - Remove unnecessary '!= NULL' check before freeing it;
> > > >
> > > > Change in v6:
> > > > - Refine exit point;
> > > >
> > > > Change in v5:
> > > > - Initialize qsockfd with -1;
> > > >
> > > > Change in v4:
> > > > - Check sockfd in internals->rx_queue against 0;
> > > >
> > > > Change in v3:
> > > > - Also close sockets for all queues;
> > > >
> > > > Change in v2:
> > > > - Make the error exit point a common path.
> > >
> > > Acked-by: Michael Qiu <michael.qiu@intel.com>
> > Acked-by: Neil Horman <nhorman@tuxdriver.com>
>
> Acked-by: John W. Linville <linville@tuxdriver.com>
Applied, thanks
^ permalink raw reply [flat|nested] 22+ messages in thread
end of thread, other threads:[~2015-03-17 21:35 UTC | newest]
Thread overview: 22+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-02-26 6:42 [dpdk-dev] [PATCH] af_packet: Fix some klocwork errors Ouyang Changchun
2015-02-26 8:44 ` Pawel Wodkowski
2015-02-27 0:49 ` [dpdk-dev] [PATCH v2] " Ouyang Changchun
2015-02-27 14:04 ` Neil Horman
2015-02-28 0:51 ` Ouyang, Changchun
2015-02-28 1:27 ` [dpdk-dev] [PATCH v3] " Ouyang Changchun
2015-03-09 3:49 ` [dpdk-dev] [PATCH v4] " Ouyang Changchun
2015-03-09 6:38 ` Qiu, Michael
2015-03-09 8:47 ` Ouyang, Changchun
2015-03-09 8:58 ` [dpdk-dev] [PATCH v5] " Ouyang Changchun
2015-03-09 19:25 ` John W. Linville
2015-03-10 3:29 ` [dpdk-dev] [PATCH v6] " Ouyang Changchun
2015-03-10 8:36 ` Pawel Wodkowski
2015-03-10 8:49 ` Ouyang, Changchun
2015-03-10 8:59 ` Pawel Wodkowski
2015-03-10 10:19 ` Thomas Monjalon
2015-03-11 1:18 ` Ouyang, Changchun
2015-03-11 1:34 ` [dpdk-dev] [PATCH v7] " Ouyang Changchun
2015-03-12 10:43 ` Qiu, Michael
2015-03-12 13:38 ` Neil Horman
2015-03-12 17:09 ` John W. Linville
2015-03-17 21:34 ` Thomas Monjalon
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).