Репозиторий Sisyphus
Последнее обновление: 1 октября 2023 | Пакетов: 18631 | Посещений: 37706651
en ru br
Репозитории ALT
S:2.38.0-alt2
5.1: 0.1.5-alt1
www.altlinux.org/Changes

Группа :: Система/Основа
Пакет: make-initrd

 Главная   Изменения   Спек   Патчи   Sources   Загрузить   Gear   Bugs and FR  Repocop 

Патч: 0004-initrd-scanmod-There-is-no-need-to-check-dependency_.patch
Скачать


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
 
дизайн и разработка: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
текущий майнтейнер: Michael Shigorin