* [PATCH 1/3] depmod: unconditionally write builtin.alias.bin
2020-12-18 16:02 [PATCH 0/3] Fix kmod_load_resources without modules.builtin.modinfo Lucas De Marchi
@ 2020-12-18 16:02 ` Lucas De Marchi
2020-12-18 16:02 ` [PATCH 2/3] shared: fix UNIQ definition Lucas De Marchi
` (2 subsequent siblings)
3 siblings, 0 replies; 5+ messages in thread
From: Lucas De Marchi @ 2020-12-18 16:02 UTC (permalink / raw)
To: linux-modules; +Cc: Joe Buehler, Yauheni Kaliuta
The file is always created and unless we return an error, the temporary
file is renamed to its final destination. All other places write the
index without checking if the index is empty, so just do the same.
Reported-by: Joe Buehler <aspam@cox.net>
---
tools/depmod.c | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/tools/depmod.c b/tools/depmod.c
index 2c03dfe..3f31cdf 100644
--- a/tools/depmod.c
+++ b/tools/depmod.c
@@ -2419,7 +2419,7 @@ static int output_builtin_alias_bin(struct depmod *depmod, FILE *out)
if (ret < 0) {
if (ret == -ENOENT)
ret = 0;
- goto fail;
+ goto out;
}
kmod_list_foreach(l, builtin) {
@@ -2429,7 +2429,7 @@ static int output_builtin_alias_bin(struct depmod *depmod, FILE *out)
ret = kmod_module_get_info(mod, &info_list);
if (ret < 0)
- goto fail;
+ goto out;
kmod_list_foreach(ll, info_list) {
char alias[PATH_MAX];
@@ -2454,9 +2454,11 @@ static int output_builtin_alias_bin(struct depmod *depmod, FILE *out)
count++;
}
- if (count)
+out:
+ /* do not bother writing the index if we are going to discard it */
+ if (!ret)
index_write(idx, out);
-fail:
+
if (builtin)
kmod_module_unref_list(builtin);
--
2.29.2
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH 2/3] shared: fix UNIQ definition
2020-12-18 16:02 [PATCH 0/3] Fix kmod_load_resources without modules.builtin.modinfo Lucas De Marchi
2020-12-18 16:02 ` [PATCH 1/3] depmod: unconditionally write builtin.alias.bin Lucas De Marchi
@ 2020-12-18 16:02 ` Lucas De Marchi
2020-12-18 16:02 ` [PATCH 3/3] testsuite: add test for empty modules.builtin.aliases.bin Lucas De Marchi
2020-12-28 1:04 ` [PATCH 0/3] Fix kmod_load_resources without modules.builtin.modinfo Lucas De Marchi
3 siblings, 0 replies; 5+ messages in thread
From: Lucas De Marchi @ 2020-12-18 16:02 UTC (permalink / raw)
To: linux-modules; +Cc: Joe Buehler, Yauheni Kaliuta
We need a macro indirection for UNIQ to work. Otherwise it won't be
unique at all since it will just append "UNIQ" to the name:
In file included from testsuite/test-init.c:30:
testsuite/testsuite.h:142:27: error: redefinition of ‘stest_load_resourcesUNIQ’
---
shared/macro.h | 7 +++++--
testsuite/testsuite.h | 2 +-
2 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/shared/macro.h b/shared/macro.h
index 4fc5405..b59f7dc 100644
--- a/shared/macro.h
+++ b/shared/macro.h
@@ -45,9 +45,14 @@
})
#define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]) + _array_size_chk(arr))
+
#define XSTRINGIFY(x) #x
#define STRINGIFY(x) XSTRINGIFY(x)
+#define XCONCATENATE(x, y) x ## y
+#define CONCATENATE(x, y) XCONCATENATE(x, y)
+#define UNIQ(x) CONCATENATE(x, __COUNTER__)
+
/* Temporaries for importing index handling */
#define NOFAIL(x) (x)
#define fatal(x...) do { } while (0)
@@ -69,5 +74,3 @@
#define noreturn __attribute__((noreturn))
#endif
#endif
-
-#define UNIQ __COUNTER__
diff --git a/testsuite/testsuite.h b/testsuite/testsuite.h
index 7ed96bf..f190249 100644
--- a/testsuite/testsuite.h
+++ b/testsuite/testsuite.h
@@ -139,7 +139,7 @@ int test_run(const struct test *t);
/* Test definitions */
#define DEFINE_TEST(_name, ...) \
- static const struct test s##_name##UNIQ \
+ static const struct test UNIQ(s##_name) \
__attribute__((used, section("kmod_tests"), aligned(8))) = { \
.name = #_name, \
.func = _name, \
--
2.29.2
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH 3/3] testsuite: add test for empty modules.builtin.aliases.bin
2020-12-18 16:02 [PATCH 0/3] Fix kmod_load_resources without modules.builtin.modinfo Lucas De Marchi
2020-12-18 16:02 ` [PATCH 1/3] depmod: unconditionally write builtin.alias.bin Lucas De Marchi
2020-12-18 16:02 ` [PATCH 2/3] shared: fix UNIQ definition Lucas De Marchi
@ 2020-12-18 16:02 ` Lucas De Marchi
2020-12-28 1:04 ` [PATCH 0/3] Fix kmod_load_resources without modules.builtin.modinfo Lucas De Marchi
3 siblings, 0 replies; 5+ messages in thread
From: Lucas De Marchi @ 2020-12-18 16:02 UTC (permalink / raw)
To: linux-modules; +Cc: Joe Buehler, Yauheni Kaliuta
---
.../lib/modules/5.6.0/modules.alias | 1 +
.../lib/modules/5.6.0/modules.alias.bin | Bin 0 -> 12 bytes
.../lib/modules/5.6.0/modules.builtin | 1 +
.../lib/modules/5.6.0/modules.builtin.alias.bin | Bin 0 -> 12 bytes
.../lib/modules/5.6.0/modules.builtin.bin | Bin 0 -> 39 bytes
.../lib/modules/5.6.0/modules.dep | 0
.../lib/modules/5.6.0/modules.dep.bin | Bin 0 -> 12 bytes
.../lib/modules/5.6.0/modules.devname | 1 +
.../lib/modules/5.6.0/modules.softdep | 1 +
.../lib/modules/5.6.0/modules.symbols | 1 +
.../lib/modules/5.6.0/modules.symbols.bin | Bin 0 -> 12 bytes
testsuite/test-init.c | 9 ++++++++-
12 files changed, 13 insertions(+), 1 deletion(-)
create mode 100644 testsuite/rootfs-pristine/test-init-load-resources-empty-builtin-aliases-bin/lib/modules/5.6.0/modules.alias
create mode 100644 testsuite/rootfs-pristine/test-init-load-resources-empty-builtin-aliases-bin/lib/modules/5.6.0/modules.alias.bin
create mode 100644 testsuite/rootfs-pristine/test-init-load-resources-empty-builtin-aliases-bin/lib/modules/5.6.0/modules.builtin
create mode 100644 testsuite/rootfs-pristine/test-init-load-resources-empty-builtin-aliases-bin/lib/modules/5.6.0/modules.builtin.alias.bin
create mode 100644 testsuite/rootfs-pristine/test-init-load-resources-empty-builtin-aliases-bin/lib/modules/5.6.0/modules.builtin.bin
create mode 100644 testsuite/rootfs-pristine/test-init-load-resources-empty-builtin-aliases-bin/lib/modules/5.6.0/modules.dep
create mode 100644 testsuite/rootfs-pristine/test-init-load-resources-empty-builtin-aliases-bin/lib/modules/5.6.0/modules.dep.bin
create mode 100644 testsuite/rootfs-pristine/test-init-load-resources-empty-builtin-aliases-bin/lib/modules/5.6.0/modules.devname
create mode 100644 testsuite/rootfs-pristine/test-init-load-resources-empty-builtin-aliases-bin/lib/modules/5.6.0/modules.softdep
create mode 100644 testsuite/rootfs-pristine/test-init-load-resources-empty-builtin-aliases-bin/lib/modules/5.6.0/modules.symbols
create mode 100644 testsuite/rootfs-pristine/test-init-load-resources-empty-builtin-aliases-bin/lib/modules/5.6.0/modules.symbols.bin
diff --git a/testsuite/rootfs-pristine/test-init-load-resources-empty-builtin-aliases-bin/lib/modules/5.6.0/modules.alias b/testsuite/rootfs-pristine/test-init-load-resources-empty-builtin-aliases-bin/lib/modules/5.6.0/modules.alias
new file mode 100644
index 0000000..ba76e18
--- /dev/null
+++ b/testsuite/rootfs-pristine/test-init-load-resources-empty-builtin-aliases-bin/lib/modules/5.6.0/modules.alias
@@ -0,0 +1 @@
+# Aliases extracted from modules themselves.
diff --git a/testsuite/rootfs-pristine/test-init-load-resources-empty-builtin-aliases-bin/lib/modules/5.6.0/modules.alias.bin b/testsuite/rootfs-pristine/test-init-load-resources-empty-builtin-aliases-bin/lib/modules/5.6.0/modules.alias.bin
new file mode 100644
index 0000000000000000000000000000000000000000..7075435f6268c4d815aec093d61e26647666ba76
GIT binary patch
literal 12
TcmdnM{w17&iGh)Ufq@4A6;A>Z
literal 0
HcmV?d00001
diff --git a/testsuite/rootfs-pristine/test-init-load-resources-empty-builtin-aliases-bin/lib/modules/5.6.0/modules.builtin b/testsuite/rootfs-pristine/test-init-load-resources-empty-builtin-aliases-bin/lib/modules/5.6.0/modules.builtin
new file mode 100644
index 0000000..1cbec61
--- /dev/null
+++ b/testsuite/rootfs-pristine/test-init-load-resources-empty-builtin-aliases-bin/lib/modules/5.6.0/modules.builtin
@@ -0,0 +1 @@
+kernel/fake_builtin.ko
diff --git a/testsuite/rootfs-pristine/test-init-load-resources-empty-builtin-aliases-bin/lib/modules/5.6.0/modules.builtin.alias.bin b/testsuite/rootfs-pristine/test-init-load-resources-empty-builtin-aliases-bin/lib/modules/5.6.0/modules.builtin.alias.bin
new file mode 100644
index 0000000000000000000000000000000000000000..7075435f6268c4d815aec093d61e26647666ba76
GIT binary patch
literal 12
TcmdnM{w17&iGh)Ufq@4A6;A>Z
literal 0
HcmV?d00001
diff --git a/testsuite/rootfs-pristine/test-init-load-resources-empty-builtin-aliases-bin/lib/modules/5.6.0/modules.builtin.bin b/testsuite/rootfs-pristine/test-init-load-resources-empty-builtin-aliases-bin/lib/modules/5.6.0/modules.builtin.bin
new file mode 100644
index 0000000000000000000000000000000000000000..0423f039013b88f58bce7a26d4086974e5a8b96a
GIT binary patch
literal 39
qcmdnM{w17&iGfjpfk81bJ2gJ3G&83pGmilX7(oO>TG{~y1|9&t?g(c9
literal 0
HcmV?d00001
diff --git a/testsuite/rootfs-pristine/test-init-load-resources-empty-builtin-aliases-bin/lib/modules/5.6.0/modules.dep b/testsuite/rootfs-pristine/test-init-load-resources-empty-builtin-aliases-bin/lib/modules/5.6.0/modules.dep
new file mode 100644
index 0000000..e69de29
diff --git a/testsuite/rootfs-pristine/test-init-load-resources-empty-builtin-aliases-bin/lib/modules/5.6.0/modules.dep.bin b/testsuite/rootfs-pristine/test-init-load-resources-empty-builtin-aliases-bin/lib/modules/5.6.0/modules.dep.bin
new file mode 100644
index 0000000000000000000000000000000000000000..7075435f6268c4d815aec093d61e26647666ba76
GIT binary patch
literal 12
TcmdnM{w17&iGh)Ufq@4A6;A>Z
literal 0
HcmV?d00001
diff --git a/testsuite/rootfs-pristine/test-init-load-resources-empty-builtin-aliases-bin/lib/modules/5.6.0/modules.devname b/testsuite/rootfs-pristine/test-init-load-resources-empty-builtin-aliases-bin/lib/modules/5.6.0/modules.devname
new file mode 100644
index 0000000..58f6d6d
--- /dev/null
+++ b/testsuite/rootfs-pristine/test-init-load-resources-empty-builtin-aliases-bin/lib/modules/5.6.0/modules.devname
@@ -0,0 +1 @@
+# Device nodes to trigger on-demand module loading.
diff --git a/testsuite/rootfs-pristine/test-init-load-resources-empty-builtin-aliases-bin/lib/modules/5.6.0/modules.softdep b/testsuite/rootfs-pristine/test-init-load-resources-empty-builtin-aliases-bin/lib/modules/5.6.0/modules.softdep
new file mode 100644
index 0000000..5554ccc
--- /dev/null
+++ b/testsuite/rootfs-pristine/test-init-load-resources-empty-builtin-aliases-bin/lib/modules/5.6.0/modules.softdep
@@ -0,0 +1 @@
+# Soft dependencies extracted from modules themselves.
diff --git a/testsuite/rootfs-pristine/test-init-load-resources-empty-builtin-aliases-bin/lib/modules/5.6.0/modules.symbols b/testsuite/rootfs-pristine/test-init-load-resources-empty-builtin-aliases-bin/lib/modules/5.6.0/modules.symbols
new file mode 100644
index 0000000..618c345
--- /dev/null
+++ b/testsuite/rootfs-pristine/test-init-load-resources-empty-builtin-aliases-bin/lib/modules/5.6.0/modules.symbols
@@ -0,0 +1 @@
+# Aliases for symbols, used by symbol_request().
diff --git a/testsuite/rootfs-pristine/test-init-load-resources-empty-builtin-aliases-bin/lib/modules/5.6.0/modules.symbols.bin b/testsuite/rootfs-pristine/test-init-load-resources-empty-builtin-aliases-bin/lib/modules/5.6.0/modules.symbols.bin
new file mode 100644
index 0000000000000000000000000000000000000000..7075435f6268c4d815aec093d61e26647666ba76
GIT binary patch
literal 12
TcmdnM{w17&iGh)Ufq@4A6;A>Z
literal 0
HcmV?d00001
diff --git a/testsuite/test-init.c b/testsuite/test-init.c
index 3a69b43..edbfc23 100644
--- a/testsuite/test-init.c
+++ b/testsuite/test-init.c
@@ -52,13 +52,20 @@ static noreturn int test_load_resources(const struct test *t)
exit(EXIT_SUCCESS);
}
DEFINE_TEST(test_load_resources,
- .description = "test if kmod_load_resources works",
+ .description = "test if kmod_load_resources works (recent modprobe on kernel without modules.builtin.modinfo)",
.config = {
[TC_ROOTFS] = TESTSUITE_ROOTFS "test-init-load-resources/",
[TC_UNAME_R] = "5.6.0",
},
.need_spawn = true);
+DEFINE_TEST(test_load_resources,
+ .description = "test if kmod_load_resources works with empty modules.builtin.aliases.bin (recent depmod on kernel without modules.builtin.modinfo)",
+ .config = {
+ [TC_ROOTFS] = TESTSUITE_ROOTFS "test-init-load-resources-empty-builtin-aliases-bin/",
+ [TC_UNAME_R] = "5.6.0",
+ },
+ .need_spawn = true);
static noreturn int test_initlib(const struct test *t)
{
--
2.29.2
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH 0/3] Fix kmod_load_resources without modules.builtin.modinfo
2020-12-18 16:02 [PATCH 0/3] Fix kmod_load_resources without modules.builtin.modinfo Lucas De Marchi
` (2 preceding siblings ...)
2020-12-18 16:02 ` [PATCH 3/3] testsuite: add test for empty modules.builtin.aliases.bin Lucas De Marchi
@ 2020-12-28 1:04 ` Lucas De Marchi
3 siblings, 0 replies; 5+ messages in thread
From: Lucas De Marchi @ 2020-12-28 1:04 UTC (permalink / raw)
To: Lucas De Marchi; +Cc: linux-modules, Joe Buehler, Yauheni Kaliuta
Applied
Lucas De Marchi
On Fri, Dec 18, 2020 at 8:08 AM Lucas De Marchi
<lucas.demarchi@intel.com> wrote:
>
> When there isn't a modules.builtin.modinfo from the kernel, depmod
> should not generate and 0-sized modules.builtin.alias.bin file. It
> should rather be an empty index.
>
> Lucas De Marchi (3):
> depmod: unconditionally write builtin.alias.bin
> shared: fix UNIQ definition
> testsuite: add test for empty modules.builtin.aliases.bin
>
> shared/macro.h | 7 +++++--
> .../lib/modules/5.6.0/modules.alias | 1 +
> .../lib/modules/5.6.0/modules.alias.bin | Bin 0 -> 12 bytes
> .../lib/modules/5.6.0/modules.builtin | 1 +
> .../lib/modules/5.6.0/modules.builtin.alias.bin | Bin 0 -> 12 bytes
> .../lib/modules/5.6.0/modules.builtin.bin | Bin 0 -> 39 bytes
> .../lib/modules/5.6.0/modules.dep | 0
> .../lib/modules/5.6.0/modules.dep.bin | Bin 0 -> 12 bytes
> .../lib/modules/5.6.0/modules.devname | 1 +
> .../lib/modules/5.6.0/modules.softdep | 1 +
> .../lib/modules/5.6.0/modules.symbols | 1 +
> .../lib/modules/5.6.0/modules.symbols.bin | Bin 0 -> 12 bytes
> testsuite/test-init.c | 9 ++++++++-
> testsuite/testsuite.h | 2 +-
> tools/depmod.c | 10 ++++++----
> 15 files changed, 25 insertions(+), 8 deletions(-)
> create mode 100644 testsuite/rootfs-pristine/test-init-load-resources-empty-builtin-aliases-bin/lib/modules/5.6.0/modules.alias
> create mode 100644 testsuite/rootfs-pristine/test-init-load-resources-empty-builtin-aliases-bin/lib/modules/5.6.0/modules.alias.bin
> create mode 100644 testsuite/rootfs-pristine/test-init-load-resources-empty-builtin-aliases-bin/lib/modules/5.6.0/modules.builtin
> create mode 100644 testsuite/rootfs-pristine/test-init-load-resources-empty-builtin-aliases-bin/lib/modules/5.6.0/modules.builtin.alias.bin
> create mode 100644 testsuite/rootfs-pristine/test-init-load-resources-empty-builtin-aliases-bin/lib/modules/5.6.0/modules.builtin.bin
> create mode 100644 testsuite/rootfs-pristine/test-init-load-resources-empty-builtin-aliases-bin/lib/modules/5.6.0/modules.dep
> create mode 100644 testsuite/rootfs-pristine/test-init-load-resources-empty-builtin-aliases-bin/lib/modules/5.6.0/modules.dep.bin
> create mode 100644 testsuite/rootfs-pristine/test-init-load-resources-empty-builtin-aliases-bin/lib/modules/5.6.0/modules.devname
> create mode 100644 testsuite/rootfs-pristine/test-init-load-resources-empty-builtin-aliases-bin/lib/modules/5.6.0/modules.softdep
> create mode 100644 testsuite/rootfs-pristine/test-init-load-resources-empty-builtin-aliases-bin/lib/modules/5.6.0/modules.symbols
> create mode 100644 testsuite/rootfs-pristine/test-init-load-resources-empty-builtin-aliases-bin/lib/modules/5.6.0/modules.symbols.bin
>
> --
> 2.29.2
>
^ permalink raw reply [flat|nested] 5+ messages in thread