log: fix level picked with globbing on type register
Checks
Commit Message
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
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.
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
@@ -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)