Sisyphus repositório
Última atualização: 1 outubro 2023 | SRPMs: 18631 | Visitas: 37696900
en ru br
ALT Linux repositórios
S:2.38.0-alt2

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


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
 
projeto & código: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
mantenedor atual: Michael Shigorin
mantenedor da tradução: Fernando Martini aka fmartini © 2009