Group :: Sistema/Base
RPM: make-initrd
Main Changelog Spec Patches Sources Download Gear Bugs e FR Repocop
Patch: 0004-initrd-scanmod-There-is-no-need-to-check-dependency_.patch
Download
Download
From 91d30bb504d6fe0e6545ea680d058d1a67fdc3f6 Mon Sep 17 00:00:00 2001
From: Alexey Gladkov <gladkov.alexey@gmail.com>
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 <gladkov.alexey@gmail.com>
---
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