DPDK patches and discussions
 help / color / mirror / Atom feed
* [dpdk-dev] [PATCH] eal/option: fix option register duplicate detection
@ 2018-12-17  9:25 Gaetan Rivet
  2018-12-17  9:35 ` Burakov, Anatoly
  2018-12-17 10:19 ` [dpdk-dev] [PATCH] eal/option: fix option register duplicate detection David Marchand
  0 siblings, 2 replies; 8+ messages in thread
From: Gaetan Rivet @ 2018-12-17  9:25 UTC (permalink / raw)
  To: dev; +Cc: Gaetan Rivet, stable

Missing brackets around the if means that the loop will end at its first
iteration.

Cc: stable@dpdk.org

Fixes: 2395332798d0 ("eal: add option register infrastructure")
Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
---
 lib/librte_eal/common/rte_option.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/lib/librte_eal/common/rte_option.c b/lib/librte_eal/common/rte_option.c
index 02d59a869..eefb8b923 100644
--- a/lib/librte_eal/common/rte_option.c
+++ b/lib/librte_eal/common/rte_option.c
@@ -35,10 +35,11 @@ void __rte_experimental
 rte_option_register(struct rte_option *opt)
 {
 	TAILQ_FOREACH(option, &rte_option_list, next) {
-		if (strcmp(opt->opt_str, option->opt_str) == 0)
+		if (strcmp(opt->opt_str, option->opt_str) == 0) {
 			RTE_LOG(INFO, EAL, "Option %s has already been registered.",
 					opt->opt_str);
 			return;
+		}
 	}
 
 	TAILQ_INSERT_HEAD(&rte_option_list, opt, next);
-- 
2.19.1

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

* Re: [dpdk-dev] [PATCH] eal/option: fix option register duplicate detection
  2018-12-17  9:25 [dpdk-dev] [PATCH] eal/option: fix option register duplicate detection Gaetan Rivet
@ 2018-12-17  9:35 ` Burakov, Anatoly
  2018-12-18 10:26   ` [dpdk-dev] [PATCH] mk: use misleading indentation warning when available Gaetan Rivet
  2018-12-17 10:19 ` [dpdk-dev] [PATCH] eal/option: fix option register duplicate detection David Marchand
  1 sibling, 1 reply; 8+ messages in thread
From: Burakov, Anatoly @ 2018-12-17  9:35 UTC (permalink / raw)
  To: Gaetan Rivet, dev; +Cc: stable

On 17-Dec-18 9:25 AM, Gaetan Rivet wrote:
> Missing brackets around the if means that the loop will end at its first
> iteration.
> 
> Cc: stable@dpdk.org
> 
> Fixes: 2395332798d0 ("eal: add option register infrastructure")
> Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
> ---
>   lib/librte_eal/common/rte_option.c | 3 ++-
>   1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/lib/librte_eal/common/rte_option.c b/lib/librte_eal/common/rte_option.c
> index 02d59a869..eefb8b923 100644
> --- a/lib/librte_eal/common/rte_option.c
> +++ b/lib/librte_eal/common/rte_option.c
> @@ -35,10 +35,11 @@ void __rte_experimental
>   rte_option_register(struct rte_option *opt)
>   {
>   	TAILQ_FOREACH(option, &rte_option_list, next) {
> -		if (strcmp(opt->opt_str, option->opt_str) == 0)
> +		if (strcmp(opt->opt_str, option->opt_str) == 0) {
>   			RTE_LOG(INFO, EAL, "Option %s has already been registered.",
>   					opt->opt_str);
>   			return;
> +		}
>   	}
>   
>   	TAILQ_INSERT_HEAD(&rte_option_list, opt, next);
> 

This is why i don't like the "no brackets on single-statement if clause" 
rule in our coding style guide - it makes mistakes like these easier to 
do. This wouldn't have happened if we mandated to have brackets always, 
for everything.

Reviewed-by: Anatoly Burakov <anatoly.burakov@intel.com>

-- 
Thanks,
Anatoly

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

* Re: [dpdk-dev] [PATCH] eal/option: fix option register duplicate detection
  2018-12-17  9:25 [dpdk-dev] [PATCH] eal/option: fix option register duplicate detection Gaetan Rivet
  2018-12-17  9:35 ` Burakov, Anatoly
@ 2018-12-17 10:19 ` David Marchand
  2018-12-19 22:59   ` Thomas Monjalon
  1 sibling, 1 reply; 8+ messages in thread
From: David Marchand @ 2018-12-17 10:19 UTC (permalink / raw)
  To: Gaetan Rivet; +Cc: dev, stable

On Mon, Dec 17, 2018 at 10:26 AM Gaetan Rivet <gaetan.rivet@6wind.com>
wrote:

> Missing brackets around the if means that the loop will end at its first
> iteration.
>
> Cc: stable@dpdk.org
>
> Fixes: 2395332798d0 ("eal: add option register infrastructure")
> Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
> ---
>  lib/librte_eal/common/rte_option.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/lib/librte_eal/common/rte_option.c
> b/lib/librte_eal/common/rte_option.c
> index 02d59a869..eefb8b923 100644
> --- a/lib/librte_eal/common/rte_option.c
> +++ b/lib/librte_eal/common/rte_option.c
> @@ -35,10 +35,11 @@ void __rte_experimental
>  rte_option_register(struct rte_option *opt)
>  {
>         TAILQ_FOREACH(option, &rte_option_list, next) {
> -               if (strcmp(opt->opt_str, option->opt_str) == 0)
> +               if (strcmp(opt->opt_str, option->opt_str) == 0) {
>                         RTE_LOG(INFO, EAL, "Option %s has already been
> registered.",
>                                         opt->opt_str);
>                         return;
> +               }
>         }
>
>         TAILQ_INSERT_HEAD(&rte_option_list, opt, next);
>

Reviewed-by: David Marchand <david.marchand@redhat.com>

Different topic but having a return code would be better than a simple log.

-- 
David Marchand

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

* [dpdk-dev] [PATCH] mk: use misleading indentation warning when available
  2018-12-17  9:35 ` Burakov, Anatoly
@ 2018-12-18 10:26   ` Gaetan Rivet
  2018-12-18 14:50     ` Ferruh Yigit
  0 siblings, 1 reply; 8+ messages in thread
From: Gaetan Rivet @ 2018-12-18 10:26 UTC (permalink / raw)
  To: dev; +Cc: Gaetan Rivet

-Wmisleading-indentation was introduced in GCC 6.0.

Use it at least when available. This should catch most common
error of the types (due to the codebase being properly tabbed),
but will still miss patterns such as

    if (!condition)
    	// commented_fn_call();
    do_stuff();

Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
---

I completely agree that we should change the coding style and force
all if()s to have brackets.

In the meantime, this patch might help alleviate the issue.

 mk/toolchain/gcc/rte.vars.mk | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/mk/toolchain/gcc/rte.vars.mk b/mk/toolchain/gcc/rte.vars.mk
index d8b99faf6..2c9bde1d5 100644
--- a/mk/toolchain/gcc/rte.vars.mk
+++ b/mk/toolchain/gcc/rte.vars.mk
@@ -87,5 +87,9 @@ WERROR_FLAGS += -Wimplicit-fallthrough=2
 WERROR_FLAGS += -Wno-format-truncation
 endif
 
+ifeq ($(shell test $(GCC_VERSION) -gt 60 && echo 1), 1)
+WERROR_FLAGS += -Wmisleading-indentation
+endif
+
 export CC AS AR LD OBJCOPY OBJDUMP STRIP READELF
 export TOOLCHAIN_CFLAGS TOOLCHAIN_LDFLAGS TOOLCHAIN_ASFLAGS
-- 
2.19.1

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

* Re: [dpdk-dev] [PATCH] mk: use misleading indentation warning when available
  2018-12-18 10:26   ` [dpdk-dev] [PATCH] mk: use misleading indentation warning when available Gaetan Rivet
@ 2018-12-18 14:50     ` Ferruh Yigit
  2018-12-19  9:24       ` Gaëtan Rivet
  0 siblings, 1 reply; 8+ messages in thread
From: Ferruh Yigit @ 2018-12-18 14:50 UTC (permalink / raw)
  To: Gaetan Rivet, dev

On 12/18/2018 10:26 AM, Gaetan Rivet wrote:
> -Wmisleading-indentation was introduced in GCC 6.0.

It seems '-Wmisleading-indentation' is part of -Wall, which we already set by
default. If so no need to explicitly add it.

The link I found:
https://www.gnu.org/software/gcc/gcc-6/porting_to.html

copy-paste:
"
A new warning -Wmisleading-indentation was added to -Wall, warning about places
where the indentation of the code might mislead a human reader about the control
flow:
"

Is there a way to confirm it is part of -Wall?

> 
> Use it at least when available. This should catch most common
> error of the types (due to the codebase being properly tabbed),
> but will still miss patterns such as
> 
>     if (!condition)
>     	// commented_fn_call();
>     do_stuff();
> 
> Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
> ---
> 
> I completely agree that we should change the coding style and force
> all if()s to have brackets.
> 
> In the meantime, this patch might help alleviate the issue.
> 
>  mk/toolchain/gcc/rte.vars.mk | 4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/mk/toolchain/gcc/rte.vars.mk b/mk/toolchain/gcc/rte.vars.mk
> index d8b99faf6..2c9bde1d5 100644
> --- a/mk/toolchain/gcc/rte.vars.mk
> +++ b/mk/toolchain/gcc/rte.vars.mk
> @@ -87,5 +87,9 @@ WERROR_FLAGS += -Wimplicit-fallthrough=2
>  WERROR_FLAGS += -Wno-format-truncation
>  endif
>  
> +ifeq ($(shell test $(GCC_VERSION) -gt 60 && echo 1), 1)
> +WERROR_FLAGS += -Wmisleading-indentation
> +endif
> +
>  export CC AS AR LD OBJCOPY OBJDUMP STRIP READELF
>  export TOOLCHAIN_CFLAGS TOOLCHAIN_LDFLAGS TOOLCHAIN_ASFLAGS
> 

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

* Re: [dpdk-dev] [PATCH] mk: use misleading indentation warning when available
  2018-12-18 14:50     ` Ferruh Yigit
@ 2018-12-19  9:24       ` Gaëtan Rivet
  2018-12-19 10:05         ` Burakov, Anatoly
  0 siblings, 1 reply; 8+ messages in thread
From: Gaëtan Rivet @ 2018-12-19  9:24 UTC (permalink / raw)
  To: Ferruh Yigit; +Cc: dev

On Tue, Dec 18, 2018 at 02:50:30PM +0000, Ferruh Yigit wrote:
> On 12/18/2018 10:26 AM, Gaetan Rivet wrote:
> > -Wmisleading-indentation was introduced in GCC 6.0.
> 
> It seems '-Wmisleading-indentation' is part of -Wall, which we already set by
> default. If so no need to explicitly add it.
> 
> The link I found:
> https://www.gnu.org/software/gcc/gcc-6/porting_to.html
> 
> copy-paste:
> "
> A new warning -Wmisleading-indentation was added to -Wall, warning about places
> where the indentation of the code might mislead a human reader about the control
> flow:
> "
> 
> Is there a way to confirm it is part of -Wall?
> 

I think you are right, actually the check was already used.
This is worrying, given that the original bug was not seen.

This patch can be left out then, but the problem remains. Maybe an
update to coding style is needed, or an evolution to checkpatch //
preferably something else.

> > 
> > Use it at least when available. This should catch most common
> > error of the types (due to the codebase being properly tabbed),
> > but will still miss patterns such as
> > 
> >     if (!condition)
> >     	// commented_fn_call();
> >     do_stuff();
> > 
> > Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
> > ---
> > 
> > I completely agree that we should change the coding style and force
> > all if()s to have brackets.
> > 
> > In the meantime, this patch might help alleviate the issue.
> > 
> >  mk/toolchain/gcc/rte.vars.mk | 4 ++++
> >  1 file changed, 4 insertions(+)
> > 
> > diff --git a/mk/toolchain/gcc/rte.vars.mk b/mk/toolchain/gcc/rte.vars.mk
> > index d8b99faf6..2c9bde1d5 100644
> > --- a/mk/toolchain/gcc/rte.vars.mk
> > +++ b/mk/toolchain/gcc/rte.vars.mk
> > @@ -87,5 +87,9 @@ WERROR_FLAGS += -Wimplicit-fallthrough=2
> >  WERROR_FLAGS += -Wno-format-truncation
> >  endif
> >  
> > +ifeq ($(shell test $(GCC_VERSION) -gt 60 && echo 1), 1)
> > +WERROR_FLAGS += -Wmisleading-indentation
> > +endif
> > +
> >  export CC AS AR LD OBJCOPY OBJDUMP STRIP READELF
> >  export TOOLCHAIN_CFLAGS TOOLCHAIN_LDFLAGS TOOLCHAIN_ASFLAGS
> > 
> 

-- 
Gaëtan Rivet
6WIND

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

* Re: [dpdk-dev] [PATCH] mk: use misleading indentation warning when available
  2018-12-19  9:24       ` Gaëtan Rivet
@ 2018-12-19 10:05         ` Burakov, Anatoly
  0 siblings, 0 replies; 8+ messages in thread
From: Burakov, Anatoly @ 2018-12-19 10:05 UTC (permalink / raw)
  To: Gaëtan Rivet, Ferruh Yigit; +Cc: dev

On 19-Dec-18 9:24 AM, Gaëtan Rivet wrote:
> On Tue, Dec 18, 2018 at 02:50:30PM +0000, Ferruh Yigit wrote:
>> On 12/18/2018 10:26 AM, Gaetan Rivet wrote:
>>> -Wmisleading-indentation was introduced in GCC 6.0.
>>
>> It seems '-Wmisleading-indentation' is part of -Wall, which we already set by
>> default. If so no need to explicitly add it.
>>
>> The link I found:
>> https://www.gnu.org/software/gcc/gcc-6/porting_to.html
>>
>> copy-paste:
>> "
>> A new warning -Wmisleading-indentation was added to -Wall, warning about places
>> where the indentation of the code might mislead a human reader about the control
>> flow:
>> "
>>
>> Is there a way to confirm it is part of -Wall?
>>
> 
> I think you are right, actually the check was already used.
> This is worrying, given that the original bug was not seen.
> 
> This patch can be left out then, but the problem remains. Maybe an
> update to coding style is needed, or an evolution to checkpatch //
> preferably something else.

clang-format? It's not exactly a style *checker*, but if we had a 
.clang-format config file included with DPDK, it would be easy to 1) 
format the code properly before sending out the patches, and 2) convert 
the entire DPDK codebase to the new style, should such need arise.

(also, uncrustify and other code beautifiers...)

-- 
Thanks,
Anatoly

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

* Re: [dpdk-dev] [PATCH] eal/option: fix option register duplicate detection
  2018-12-17 10:19 ` [dpdk-dev] [PATCH] eal/option: fix option register duplicate detection David Marchand
@ 2018-12-19 22:59   ` Thomas Monjalon
  0 siblings, 0 replies; 8+ messages in thread
From: Thomas Monjalon @ 2018-12-19 22:59 UTC (permalink / raw)
  To: Gaetan Rivet; +Cc: dev, David Marchand, stable

17/12/2018 11:19, David Marchand:
> On Mon, Dec 17, 2018 at 10:26 AM Gaetan Rivet <gaetan.rivet@6wind.com>
> wrote:
> 
> > Missing brackets around the if means that the loop will end at its first
> > iteration.
> >
> > Cc: stable@dpdk.org
> >
> > Fixes: 2395332798d0 ("eal: add option register infrastructure")
> > Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
> > ---
> >  rte_option_register(struct rte_option *opt)
> >  {
> >         TAILQ_FOREACH(option, &rte_option_list, next) {
> > -               if (strcmp(opt->opt_str, option->opt_str) == 0)
> > +               if (strcmp(opt->opt_str, option->opt_str) == 0) {
> >                         RTE_LOG(INFO, EAL, "Option %s has already been
> > registered.",
> >                                         opt->opt_str);
> >                         return;
> > +               }
> >         }
> 
> Reviewed-by: David Marchand <david.marchand@redhat.com>

Applied, thanks

> Different topic but having a return code would be better than a simple log.

+1

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

end of thread, other threads:[~2018-12-19 22:59 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-12-17  9:25 [dpdk-dev] [PATCH] eal/option: fix option register duplicate detection Gaetan Rivet
2018-12-17  9:35 ` Burakov, Anatoly
2018-12-18 10:26   ` [dpdk-dev] [PATCH] mk: use misleading indentation warning when available Gaetan Rivet
2018-12-18 14:50     ` Ferruh Yigit
2018-12-19  9:24       ` Gaëtan Rivet
2018-12-19 10:05         ` Burakov, Anatoly
2018-12-17 10:19 ` [dpdk-dev] [PATCH] eal/option: fix option register duplicate detection David Marchand
2018-12-19 22:59   ` 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).