log: fix level picked with globbing on type register

Message ID 20200407224758.57459-1-thomas@monjalon.net (mailing list archive)
State Accepted, archived
Delegated to: Thomas Monjalon
Headers
Series log: fix level picked with globbing on type register |

Checks

Context Check Description
ci/checkpatch warning coding style issues
ci/iol-intel-Performance success Performance Testing PASS
ci/Intel-compilation success Compilation OK
ci/iol-mellanox-Performance success Performance Testing PASS
ci/iol-testing success Testing PASS
ci/travis-robot success Travis build: passed

Commit Message

Thomas Monjalon April 7, 2020, 10:47 p.m. UTC
  When a log type is registered, the level can be picked
by matching saved options.
The check of fnmatch globbing result was reversed.

The same bug was already fixed in a similar function.
This one is acting in log type register function.

Note: this function rte_log_register_type_and_pick_level()
is not used a lot and could be merged with rte_log_register().

Fixes: 6ff0f81d0ef7 ("log: fix pattern matching")
Cc: stable@dpdk.org

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
---
 lib/librte_eal/common/eal_common_log.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
  

Comments

David Marchand April 9, 2020, 8:26 a.m. UTC | #1
On Wed, Apr 8, 2020 at 12:48 AM Thomas Monjalon <thomas@monjalon.net> wrote:
>
> When a log type is registered, the level can be picked
> by matching saved options.
> The check of fnmatch globbing result was reversed.
>
> The same bug was already fixed in a similar function.
> This one is acting in log type register function.
>
> Note: this function rte_log_register_type_and_pick_level()
> is not used a lot and could be merged with rte_log_register().

Same fix as a patch I sent quite some time ago and left behind..
https://patchwork.dpdk.org/patch/57742/

I left it in a series I wanted to work on later...
Anyway, this fix is needed.
I suppose we are missing a unit test too.
  
Thomas Monjalon April 16, 2020, 8:05 p.m. UTC | #2
08/04/2020 00:47, Thomas Monjalon:
> When a log type is registered, the level can be picked
> by matching saved options.
> The check of fnmatch globbing result was reversed.
> 
> The same bug was already fixed in a similar function.
> This one is acting in log type register function.
> 
> Note: this function rte_log_register_type_and_pick_level()
> is not used a lot and could be merged with rte_log_register().
> 
> Fixes: 6ff0f81d0ef7 ("log: fix pattern matching")
> Cc: stable@dpdk.org
> 
> Signed-off-by: Thomas Monjalon <thomas@monjalon.net>

Applied
  

Patch

diff --git a/lib/librte_eal/common/eal_common_log.c b/lib/librte_eal/common/eal_common_log.c
index 7647a916ef..d7a5f9b641 100644
--- a/lib/librte_eal/common/eal_common_log.c
+++ b/lib/librte_eal/common/eal_common_log.c
@@ -320,7 +320,7 @@  rte_log_register_type_and_pick_level(const char *name, uint32_t level_def)
 			continue;
 
 		if (opt_ll->pattern) {
-			if (fnmatch(opt_ll->pattern, name, 0))
+			if (fnmatch(opt_ll->pattern, name, 0) == 0)
 				level = opt_ll->level;
 		} else {
 			if (regexec(&opt_ll->re_match, name, 0, NULL, 0) == 0)