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