From 91d30bb504d6fe0e6545ea680d058d1a67fdc3f6 Mon Sep 17 00:00:00 2001 From: Alexey Gladkov Date: Mon, 28 Mar 2022 14:15:19 +0200 Subject: initrd-scanmod: There is no need to check dependency_symbols if the rule has already fired Signed-off-by: Alexey Gladkov --- utils/initrd-scanmod/initrd-scanmod-walk.c | 44 +++++++++++----------- 1 file changed, 23 insertions(+), 21 deletions(-) diff --git a/utils/initrd-scanmod/initrd-scanmod-walk.c b/utils/initrd-scanmod/initrd-scanmod-walk.c index 893e9d16e..d9900425c 100644 --- a/utils/initrd-scanmod/initrd-scanmod-walk.c +++ b/utils/initrd-scanmod/initrd-scanmod-walk.c @@ -182,30 +182,32 @@ process_module_ruleset(struct kmod_ctx *ctx, const char *filename, struct rulese goto exit; } - rc = kmod_module_get_dependency_symbols(mod, &symlist); + if (!(is_match & RULESET_HAS_SYMBOLS)) { + rc = kmod_module_get_dependency_symbols(mod, &symlist); - if (rc > 0) { - rc = match(symlist, set->symbols, NULL, &kmod_module_dependency_symbol_get_symbol); - - kmod_module_dependency_symbols_free_list(symlist); - symlist = NULL; - - if (rc < 0) - goto exit; if (rc > 0) { - is_match |= RULESET_HAS_SYMBOLS; - - if (verbose > 1) - warnx("%s: symbols matches", kmod_module_get_path(mod)); - } else { - if (verbose > 1) - warnx("%s: symbols does not match", kmod_module_get_path(mod)); + rc = match(symlist, set->symbols, NULL, &kmod_module_dependency_symbol_get_symbol); + + kmod_module_dependency_symbols_free_list(symlist); + symlist = NULL; + + if (rc < 0) + goto exit; + if (rc > 0) { + is_match |= RULESET_HAS_SYMBOLS; + + if (verbose > 1) + warnx("%s: symbols matches", kmod_module_get_path(mod)); + } else { + if (verbose > 1) + warnx("%s: symbols does not match", kmod_module_get_path(mod)); + } + + } else if (rc < 0 && rc != -ENOENT) { + errno = -rc; + warn("Could not get dependency symbols from '%s'", modname); + goto exit; } - - } else if (rc < 0 && rc != -ENOENT) { - errno = -rc; - warn("Could not get dependency symbols from '%s'", modname); - goto exit; } } if (set->flags == is_match) -- 2.33.0