[dpdk-dev] eal: fix service array initialisation

Message ID 1505994496-10141-1-git-send-email-nelio.laranjeiro@6wind.com (mailing list archive)
State Superseded, archived
Delegated to: Thomas Monjalon
Headers

Checks

Context Check Description
ci/checkpatch warning coding style issues
ci/Intel-compilation success Compilation OK

Commit Message

Nélio Laranjeiro Sept. 21, 2017, 11:48 a.m. UTC
  GCC is complaining on variable used without being initialised.

 dpdk.org/lib/librte_eal/common/rte_service.c:
 In function ‘rte_service_start_with_defaults’:
 dpdk.org/lib/librte_eal/common/rte_service.c:449:9:
 error: ‘ids[0]’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
    ret = rte_service_map_lcore_set(i, ids[lcore_iter], 1);

Fixes: 21698354c832 ("service: introduce service cores concept")
Cc: harry.van.haaren@intel.com

Signed-off-by: Nelio Laranjeiro <nelio.laranjeiro@6wind.com>
---
 lib/librte_eal/common/rte_service.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
  

Comments

Van Haaren, Harry Sept. 21, 2017, 11:53 a.m. UTC | #1
> From: Nelio Laranjeiro [mailto:nelio.laranjeiro@6wind.com]

> Sent: Thursday, September 21, 2017 12:48 PM

> To: dev@dpdk.org

> Cc: Van Haaren, Harry <harry.van.haaren@intel.com>

> Subject: [PATCH] eal: fix service array initialisation

> 

> GCC is complaining on variable used without being initialised.

> 

>  dpdk.org/lib/librte_eal/common/rte_service.c:

>  In function ‘rte_service_start_with_defaults’:

>  dpdk.org/lib/librte_eal/common/rte_service.c:449:9:

>  error: ‘ids[0]’ may be used uninitialized in this function [-Werror=maybe-

> uninitialized]

>     ret = rte_service_map_lcore_set(i, ids[lcore_iter], 1);

> 

> Fixes: 21698354c832 ("service: introduce service cores concept")

> Cc: harry.van.haaren@intel.com

> 

> Signed-off-by: Nelio Laranjeiro <nelio.laranjeiro@6wind.com>


Hi Nelio,

Thanks for the patch - indeed this seems to be an issue. It was raised by Yang too
in this thread http://dpdk.org/ml/archives/dev/2017-September/076210.html

Given I've asked for a v2 of that patchset, and it was posted earlier I'll suggest
to merge that one, if that's OK with you?

On another note, I'm curious why neither I or the automated build-system experienced this...

Thanks for investigating / proposing a solution. -Harry

> ---

>  lib/librte_eal/common/rte_service.c | 2 +-

>  1 file changed, 1 insertion(+), 1 deletion(-)

> 

> diff --git a/lib/librte_eal/common/rte_service.c

> b/lib/librte_eal/common/rte_service.c

> index 43716bb..aa05277 100644

> --- a/lib/librte_eal/common/rte_service.c

> +++ b/lib/librte_eal/common/rte_service.c

> @@ -431,7 +431,7 @@ rte_service_start_with_defaults(void)

>  	uint32_t count = rte_service_get_count();

> 

>  	int32_t lcore_iter = 0;

> -	uint32_t ids[RTE_MAX_LCORE];

> +	uint32_t ids[RTE_MAX_LCORE] = { 0 };

>  	int32_t lcore_count = rte_service_lcore_list(ids, RTE_MAX_LCORE);

> 

>  	if (lcore_count == 0)

> --

> 2.1.4
  
Nélio Laranjeiro Sept. 21, 2017, 12:04 p.m. UTC | #2
Hi Harry,

On Thu, Sep 21, 2017 at 11:53:48AM +0000, Van Haaren, Harry wrote:
> > From: Nelio Laranjeiro [mailto:nelio.laranjeiro@6wind.com]
> > Sent: Thursday, September 21, 2017 12:48 PM
> > To: dev@dpdk.org
> > Cc: Van Haaren, Harry <harry.van.haaren@intel.com>
> > Subject: [PATCH] eal: fix service array initialisation
> > 
> > GCC is complaining on variable used without being initialised.
> > 
> >  dpdk.org/lib/librte_eal/common/rte_service.c:
> >  In function ‘rte_service_start_with_defaults’:
> >  dpdk.org/lib/librte_eal/common/rte_service.c:449:9:
> >  error: ‘ids[0]’ may be used uninitialized in this function [-Werror=maybe-
> > uninitialized]
> >     ret = rte_service_map_lcore_set(i, ids[lcore_iter], 1);
> > 
> > Fixes: 21698354c832 ("service: introduce service cores concept")
> > Cc: harry.van.haaren@intel.com
> > 
> > Signed-off-by: Nelio Laranjeiro <nelio.laranjeiro@6wind.com>
> 
> Hi Nelio,
> 
> Thanks for the patch - indeed this seems to be an issue. It was raised by Yang too
> in this thread http://dpdk.org/ml/archives/dev/2017-September/076210.html
> 
> Given I've asked for a v2 of that patchset, and it was posted earlier I'll suggest
> to merge that one, if that's OK with you?

Yes, it is.  I have search for such patch, but it is not easy to find
it.  I will move this patch to superseded on the patchwork.

> On another note, I'm curious why neither I or the automated build-system experienced this...

I don't know either, I faced the issue on debian 8, on ubuntu 16.04 and
redhat the issue is not visible.  It becomes quiet complicate for a
single guy to test on so many distributions ;)

> Thanks for investigating / proposing a solution. -Harry

Thanks,
  

Patch

diff --git a/lib/librte_eal/common/rte_service.c b/lib/librte_eal/common/rte_service.c
index 43716bb..aa05277 100644
--- a/lib/librte_eal/common/rte_service.c
+++ b/lib/librte_eal/common/rte_service.c
@@ -431,7 +431,7 @@  rte_service_start_with_defaults(void)
 	uint32_t count = rte_service_get_count();
 
 	int32_t lcore_iter = 0;
-	uint32_t ids[RTE_MAX_LCORE];
+	uint32_t ids[RTE_MAX_LCORE] = { 0 };
 	int32_t lcore_count = rte_service_lcore_list(ids, RTE_MAX_LCORE);
 
 	if (lcore_count == 0)