Accepting request 913018 from home:michals

Update patch to upstream version.

OBS-URL: https://build.opensuse.org/request/show/913018
OBS-URL: https://build.opensuse.org/package/show/Base:System/kmod?expand=0&rev=195
This commit is contained in:
Jan Engelhardt 2021-08-19 11:12:41 +00:00 committed by Git OBS Bridge
parent 825beebeeb
commit b50de31564

View File

@ -1,33 +1,60 @@
From 446dd2bd337f88d71682b079ce7470a4232ac1e8 Mon Sep 17 00:00:00 2001
From: Takashi Iwai <tiwai@suse.com>
Date: Wed, 18 Aug 2021 12:42:17 +0200
Subject: [PATCH] libkmod: Provide info even for modules built into the running
kernel.
From lucas.demarchi@intel.com Wed Aug 18 23:25:03 2021
To: linux-modules <linux-modules@vger.kernel.org>
Subject: [PATCH v2] libkmod: Set builtin to no when module is created from path.
Date: Wed, 18 Aug 2021 14:24:39 -0700
Message-Id: <20210818212440.2224127-1-lucas.demarchi@intel.com>
From: Michal Suchanek <msuchanek@suse.de>
When a module is built-in examining the module file is skipped.
However, a module that is built into the runnig kernel may be separate
in another kernel. Always examine the module file if it exists.
A recent bug report showed that modinfo doesn't give the signature
information for certain modules, and it turned out to happen only on
the modules that are built-in on the running kernel; then modinfo
skips the signature check, as if the target module file never exists.
The behavior is, however, inconsistent when modinfo is performed for
external modules (no matter which kernel version is) and the module
file path is explicitly given by a command-line argument, which
guarantees the presence of the module file itself.
Fixes: e7e2cb61fa9f ("modinfo: Show information about built-in modules")
Link: https://lore.kernel.org/linux-modules/CAKi4VAJVvY3=JdSZm-GD1hJqyCPYaYz-jBJ_REeY5BakVb6_ww@mail.gmail.com/
BugLink: https://bugzilla.opensuse.org/show_bug.cgi?id=1189537
Suggested-by: Lucas De Marchi <lucas.de.marchi@gmail.com>
Signed-off-by: Michal Suchanek <msuchanek@suse.de>
---
libkmod/libkmod-module.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
libkmod/libkmod-module.c | 17 +++++++++--------
1 file changed, 9 insertions(+), 8 deletions(-)
diff --git a/libkmod/libkmod-module.c b/libkmod/libkmod-module.c
index 6e0ff1a99604..9e878a5345a1 100644
index 6e0ff1a..6f7747c 100644
--- a/libkmod/libkmod-module.c
+++ b/libkmod/libkmod-module.c
@@ -2292,7 +2292,8 @@ KMOD_EXPORT int kmod_module_get_info(const struct kmod_module *mod, struct kmod_
assert(*list == NULL);
@@ -431,17 +431,18 @@ KMOD_EXPORT int kmod_module_new_from_path(struct kmod_ctx *ctx,
return -EEXIST;
}
/* remove const: this can only change internal state */
- if (kmod_module_is_builtin((struct kmod_module *)mod)) {
+ if (!kmod_module_get_path(mod) &&
+ kmod_module_is_builtin((struct kmod_module *)mod)) {
count = kmod_builtin_get_modinfo(mod->ctx,
kmod_module_get_name(mod),
&strings);
- *mod = kmod_module_ref(m);
- return 0;
- }
+ kmod_module_ref(m);
+ } else {
+ err = kmod_module_new(ctx, name, name, namelen, NULL, 0, &m);
+ if (err < 0) {
+ free(abspath);
+ return err;
+ }
- err = kmod_module_new(ctx, name, name, namelen, NULL, 0, &m);
- if (err < 0) {
- free(abspath);
- return err;
+ m->path = abspath;
}
- m->path = abspath;
+ m->builtin = KMOD_MODULE_BUILTIN_NO;
*mod = m;
return 0;
--
2.31.1