DPDK patches and discussions
 help / color / mirror / Atom feed
* [dpdk-dev] [PATCH v1] afpacket: fix critical issue reported by klocwork
@ 2015-02-12  9:08 Cunming Liang
  2015-02-20 10:19 ` Thomas Monjalon
  0 siblings, 1 reply; 6+ messages in thread
From: Cunming Liang @ 2015-02-12  9:08 UTC (permalink / raw)
  To: dev

Klocwork report 'req' might be used uninitialized.
In some cases it can 'goto error' when '*internals' not been set.
The result is unexpected checking the value of '*internals'.

Signed-off-by: Cunming Liang <cunming.liang@intel.com>
---
 lib/librte_pmd_af_packet/rte_eth_af_packet.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

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 1ffe1cd..185607d 100644
--- a/lib/librte_pmd_af_packet/rte_eth_af_packet.c
+++ b/lib/librte_pmd_af_packet/rte_eth_af_packet.c
@@ -439,13 +439,15 @@ rte_pmd_init_internals(const char *name,
 	size_t ifnamelen;
 	unsigned k_idx;
 	struct sockaddr_ll sockaddr;
-	struct tpacket_req *req;
+	struct tpacket_req *req = NULL;
 	struct pkt_rx_queue *rx_queue;
 	struct pkt_tx_queue *tx_queue;
 	int rc, qsockfd, tpver, discard;
 	unsigned int i, q, rdsize;
 	int fanout_arg __rte_unused, bypass __rte_unused;
 
+	*internals = NULL;
+
 	for (k_idx = 0; k_idx < kvlist->count; k_idx++) {
 		pair = &kvlist->pairs[k_idx];
 		if (strstr(pair->key, ETH_AF_PACKET_IFACE_ARG) != NULL)
-- 
1.8.1.4

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

* Re: [dpdk-dev] [PATCH v1] afpacket: fix critical issue reported by klocwork
  2015-02-12  9:08 [dpdk-dev] [PATCH v1] afpacket: fix critical issue reported by klocwork Cunming Liang
@ 2015-02-20 10:19 ` Thomas Monjalon
  2015-02-20 18:38   ` John W. Linville
  0 siblings, 1 reply; 6+ messages in thread
From: Thomas Monjalon @ 2015-02-20 10:19 UTC (permalink / raw)
  To: Cunming Liang; +Cc: dev, John Linville

Hi Cunming,

You would have more chance to have a review by CC'ing John.
I checked your patch and have a comment below.

2015-02-12 17:08, Cunming Liang:
> Klocwork report 'req' might be used uninitialized.
> In some cases it can 'goto error' when '*internals' not been set.
> The result is unexpected checking the value of '*internals'.
> 
> Signed-off-by: Cunming Liang <cunming.liang@intel.com>
> ---
>  lib/librte_pmd_af_packet/rte_eth_af_packet.c | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
> 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 1ffe1cd..185607d 100644
> --- a/lib/librte_pmd_af_packet/rte_eth_af_packet.c
> +++ b/lib/librte_pmd_af_packet/rte_eth_af_packet.c
> @@ -439,13 +439,15 @@ rte_pmd_init_internals(const char *name,
>  	size_t ifnamelen;
>  	unsigned k_idx;
>  	struct sockaddr_ll sockaddr;
> -	struct tpacket_req *req;
> +	struct tpacket_req *req = NULL;

If *internals is set to NULL, there should be no case where req used
and undefined.

>  	struct pkt_rx_queue *rx_queue;
>  	struct pkt_tx_queue *tx_queue;
>  	int rc, qsockfd, tpver, discard;
>  	unsigned int i, q, rdsize;
>  	int fanout_arg __rte_unused, bypass __rte_unused;
>  
> +	*internals = NULL;
> +
>  	for (k_idx = 0; k_idx < kvlist->count; k_idx++) {
>  		pair = &kvlist->pairs[k_idx];
>  		if (strstr(pair->key, ETH_AF_PACKET_IFACE_ARG) != NULL)
> 

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

* Re: [dpdk-dev] [PATCH v1] afpacket: fix critical issue reported by klocwork
  2015-02-20 10:19 ` Thomas Monjalon
@ 2015-02-20 18:38   ` John W. Linville
  2015-02-25  0:57     ` Liang, Cunming
  0 siblings, 1 reply; 6+ messages in thread
From: John W. Linville @ 2015-02-20 18:38 UTC (permalink / raw)
  To: Thomas Monjalon; +Cc: dev, John Linville

On Fri, Feb 20, 2015 at 11:19:59AM +0100, Thomas Monjalon wrote:
> Hi Cunming,
> 
> You would have more chance to have a review by CC'ing John.
> I checked your patch and have a comment below.
> 
> 2015-02-12 17:08, Cunming Liang:
> > Klocwork report 'req' might be used uninitialized.
> > In some cases it can 'goto error' when '*internals' not been set.
> > The result is unexpected checking the value of '*internals'.
> > 
> > Signed-off-by: Cunming Liang <cunming.liang@intel.com>
> > ---
> >  lib/librte_pmd_af_packet/rte_eth_af_packet.c | 4 +++-
> >  1 file changed, 3 insertions(+), 1 deletion(-)
> > 
> > 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 1ffe1cd..185607d 100644
> > --- a/lib/librte_pmd_af_packet/rte_eth_af_packet.c
> > +++ b/lib/librte_pmd_af_packet/rte_eth_af_packet.c
> > @@ -439,13 +439,15 @@ rte_pmd_init_internals(const char *name,
> >  	size_t ifnamelen;
> >  	unsigned k_idx;
> >  	struct sockaddr_ll sockaddr;
> > -	struct tpacket_req *req;
> > +	struct tpacket_req *req = NULL;
> 
> If *internals is set to NULL, there should be no case where req used
> and undefined.

I agree -- it looks to me like req is protected by checking for
*internals == NULL.  I don't think this patch is necessary.
 
> >  	struct pkt_rx_queue *rx_queue;
> >  	struct pkt_tx_queue *tx_queue;
> >  	int rc, qsockfd, tpver, discard;
> >  	unsigned int i, q, rdsize;
> >  	int fanout_arg __rte_unused, bypass __rte_unused;
> >  
> > +	*internals = NULL;
> > +
> >  	for (k_idx = 0; k_idx < kvlist->count; k_idx++) {
> >  		pair = &kvlist->pairs[k_idx];
> >  		if (strstr(pair->key, ETH_AF_PACKET_IFACE_ARG) != NULL)
> > 
> 
> 
> 
> 

-- 
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] 6+ messages in thread

* Re: [dpdk-dev] [PATCH v1] afpacket: fix critical issue reported by klocwork
  2015-02-20 18:38   ` John W. Linville
@ 2015-02-25  0:57     ` Liang, Cunming
  2015-02-25  8:45       ` Thomas Monjalon
  0 siblings, 1 reply; 6+ messages in thread
From: Liang, Cunming @ 2015-02-25  0:57 UTC (permalink / raw)
  To: John W. Linville, Thomas Monjalon; +Cc: dev, John Linville



> -----Original Message-----
> From: John W. Linville [mailto:linville@tuxdriver.com]
> Sent: Saturday, February 21, 2015 2:39 AM
> To: Thomas Monjalon
> Cc: Liang, Cunming; dev@dpdk.org; John Linville
> Subject: Re: [dpdk-dev] [PATCH v1] afpacket: fix critical issue reported by
> klocwork
> 
> On Fri, Feb 20, 2015 at 11:19:59AM +0100, Thomas Monjalon wrote:
> > Hi Cunming,
> >
> > You would have more chance to have a review by CC'ing John.
> > I checked your patch and have a comment below.
> >
> > 2015-02-12 17:08, Cunming Liang:
> > > Klocwork report 'req' might be used uninitialized.
> > > In some cases it can 'goto error' when '*internals' not been set.
> > > The result is unexpected checking the value of '*internals'.
> > >
> > > Signed-off-by: Cunming Liang <cunming.liang@intel.com>
> > > ---
> > >  lib/librte_pmd_af_packet/rte_eth_af_packet.c | 4 +++-
> > >  1 file changed, 3 insertions(+), 1 deletion(-)
> > >
> > > 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 1ffe1cd..185607d 100644
> > > --- a/lib/librte_pmd_af_packet/rte_eth_af_packet.c
> > > +++ b/lib/librte_pmd_af_packet/rte_eth_af_packet.c
> > > @@ -439,13 +439,15 @@ rte_pmd_init_internals(const char *name,
> > >  	size_t ifnamelen;
> > >  	unsigned k_idx;
> > >  	struct sockaddr_ll sockaddr;
> > > -	struct tpacket_req *req;
> > > +	struct tpacket_req *req = NULL;
> >
> > If *internals is set to NULL, there should be no case where req used
> > and undefined.
[LCM] Agree, so that's why I add '*internals = NULL' below as well.
> 
> I agree -- it looks to me like req is protected by checking for
> *internals == NULL.  I don't think this patch is necessary.
[LCM] The major piece of the patch is add setting for '*internals=NULL;'.
> 
> > >  	struct pkt_rx_queue *rx_queue;
> > >  	struct pkt_tx_queue *tx_queue;
> > >  	int rc, qsockfd, tpver, discard;
> > >  	unsigned int i, q, rdsize;
> > >  	int fanout_arg __rte_unused, bypass __rte_unused;
> > >
> > > +	*internals = NULL;
> > > +
> > >  	for (k_idx = 0; k_idx < kvlist->count; k_idx++) {
> > >  		pair = &kvlist->pairs[k_idx];
> > >  		if (strstr(pair->key, ETH_AF_PACKET_IFACE_ARG) != NULL)
> > >
> >
> >
> >
> >
> 
> --
> 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] 6+ messages in thread

* Re: [dpdk-dev] [PATCH v1] afpacket: fix critical issue reported by klocwork
  2015-02-25  0:57     ` Liang, Cunming
@ 2015-02-25  8:45       ` Thomas Monjalon
  2015-02-25  9:52         ` Liang, Cunming
  0 siblings, 1 reply; 6+ messages in thread
From: Thomas Monjalon @ 2015-02-25  8:45 UTC (permalink / raw)
  To: Liang, Cunming; +Cc: dev, John Linville

2015-02-25 00:57, Liang, Cunming:
> From: John W. Linville [mailto:linville@tuxdriver.com]
> > On Fri, Feb 20, 2015 at 11:19:59AM +0100, Thomas Monjalon wrote:
> > > 2015-02-12 17:08, Cunming Liang:
> > > > --- a/lib/librte_pmd_af_packet/rte_eth_af_packet.c
> > > > +++ b/lib/librte_pmd_af_packet/rte_eth_af_packet.c
> > > > @@ -439,13 +439,15 @@ rte_pmd_init_internals(const char *name,
> > > >  	size_t ifnamelen;
> > > >  	unsigned k_idx;
> > > >  	struct sockaddr_ll sockaddr;
> > > > -	struct tpacket_req *req;
> > > > +	struct tpacket_req *req = NULL;
> > >
> > > If *internals is set to NULL, there should be no case where req used
> > > and undefined.
> 
> [LCM] Agree, so that's why I add '*internals = NULL' below as well.
> > 
> > I agree -- it looks to me like req is protected by checking for
> > *internals == NULL.  I don't think this patch is necessary.
> 
> [LCM] The major piece of the patch is add setting for '*internals=NULL;'.

Yes understood, but it is already initialized to NULL before calling
rte_pmd_init_internals():
http://dpdk.org/browse/dpdk/tree/lib/librte_pmd_af_packet/rte_eth_af_packet.c#n706

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

* Re: [dpdk-dev] [PATCH v1] afpacket: fix critical issue reported by klocwork
  2015-02-25  8:45       ` Thomas Monjalon
@ 2015-02-25  9:52         ` Liang, Cunming
  0 siblings, 0 replies; 6+ messages in thread
From: Liang, Cunming @ 2015-02-25  9:52 UTC (permalink / raw)
  To: Thomas Monjalon; +Cc: dev, John Linville



> -----Original Message-----
> From: Thomas Monjalon [mailto:thomas.monjalon@6wind.com]
> Sent: Wednesday, February 25, 2015 4:46 PM
> To: Liang, Cunming
> Cc: John W. Linville; dev@dpdk.org; John Linville
> Subject: Re: [dpdk-dev] [PATCH v1] afpacket: fix critical issue reported by
> klocwork
> 
> 2015-02-25 00:57, Liang, Cunming:
> > From: John W. Linville [mailto:linville@tuxdriver.com]
> > > On Fri, Feb 20, 2015 at 11:19:59AM +0100, Thomas Monjalon wrote:
> > > > 2015-02-12 17:08, Cunming Liang:
> > > > > --- a/lib/librte_pmd_af_packet/rte_eth_af_packet.c
> > > > > +++ b/lib/librte_pmd_af_packet/rte_eth_af_packet.c
> > > > > @@ -439,13 +439,15 @@ rte_pmd_init_internals(const char *name,
> > > > >  	size_t ifnamelen;
> > > > >  	unsigned k_idx;
> > > > >  	struct sockaddr_ll sockaddr;
> > > > > -	struct tpacket_req *req;
> > > > > +	struct tpacket_req *req = NULL;
> > > >
> > > > If *internals is set to NULL, there should be no case where req used
> > > > and undefined.
> >
> > [LCM] Agree, so that's why I add '*internals = NULL' below as well.
> > >
> > > I agree -- it looks to me like req is protected by checking for
> > > *internals == NULL.  I don't think this patch is necessary.
> >
> > [LCM] The major piece of the patch is add setting for '*internals=NULL;'.
> 
> Yes understood, but it is already initialized to NULL before calling
> rte_pmd_init_internals():
> http://dpdk.org/browse/dpdk/tree/lib/librte_pmd_af_packet/rte_eth_af_packet
> .c#n706
[LCM] I see, it's complained by klocwork.
So either adding 'internals=NULL' or adding some comments helps to avoid checking again on the next scanning.
How do you think ?

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

end of thread, other threads:[~2015-02-25  9:52 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-02-12  9:08 [dpdk-dev] [PATCH v1] afpacket: fix critical issue reported by klocwork Cunming Liang
2015-02-20 10:19 ` Thomas Monjalon
2015-02-20 18:38   ` John W. Linville
2015-02-25  0:57     ` Liang, Cunming
2015-02-25  8:45       ` Thomas Monjalon
2015-02-25  9:52         ` Liang, Cunming

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).