diff --git a/0001-Module-replace-the-module-with-new-module.patch b/0001-Module-replace-the-module-with-new-module.patch deleted file mode 100644 index d35c21350282a0e5e9231074319fe046f38da84f..0000000000000000000000000000000000000000 --- a/0001-Module-replace-the-module-with-new-module.patch +++ /dev/null @@ -1,108 +0,0 @@ -From 0eac0869e201a08170cb2255b623eab9d78072f8 Mon Sep 17 00:00:00 2001 -From: Jason Luan -Date: Wed, 16 Sep 2020 01:21:50 +0000 -Subject: [PATCH 1/2] Module: replace the module with new module - -Signed-off-by: fu.lin ---- - libkmod/libkmod-module.c | 3 +++ - libkmod/libkmod.h | 6 ++++++ - shared/missing.h | 7 +++++++ - tools/insmod.c | 7 ++++++- - 4 files changed, 22 insertions(+), 1 deletion(-) - -diff --git a/libkmod/libkmod-module.c b/libkmod/libkmod-module.c -index 12d8ed1..fd9861a 100644 ---- a/libkmod/libkmod-module.c -+++ b/libkmod/libkmod-module.c -@@ -911,8 +911,11 @@ KMOD_EXPORT int kmod_module_insert_module(struct kmod_module *mod, - kernel_flags |= MODULE_INIT_IGNORE_VERMAGIC; - if (flags & KMOD_INSERT_FORCE_MODVERSION) - kernel_flags |= MODULE_INIT_IGNORE_MODVERSIONS; -+ if (flags & KMOD_INSERT_REPLACE) -+ kernel_flags |= MODULE_REPLACE_MODULE; - - err = finit_module(kmod_file_get_fd(mod->file), args, kernel_flags); -+ - if (err == 0 || errno != ENOSYS) - goto init_finished; - } -diff --git a/libkmod/libkmod.h b/libkmod/libkmod.h -index 7251aa7..a56e5b4 100644 ---- a/libkmod/libkmod.h -+++ b/libkmod/libkmod.h -@@ -153,6 +153,9 @@ enum kmod_remove { - enum kmod_insert { - KMOD_INSERT_FORCE_VERMAGIC = 0x1, - KMOD_INSERT_FORCE_MODVERSION = 0x2, -+ -+ /* custom flag */ -+ KMOD_INSERT_REPLACE = 0x1000, - }; - - /* Flags to kmod_module_probe_insert_module() */ -@@ -164,6 +167,9 @@ enum kmod_probe { - KMOD_PROBE_DRY_RUN = 0x00010, - KMOD_PROBE_FAIL_ON_LOADED = 0x00020, - -+ /* custom flag */ -+ KMOD_PROBE_REPLACE = 0x01000, -+ - /* codes below can be used in return value, too */ - KMOD_PROBE_APPLY_BLACKLIST_ALL = 0x10000, - KMOD_PROBE_APPLY_BLACKLIST = 0x20000, -diff --git a/shared/missing.h b/shared/missing.h -index 4c0d136..4d2253b 100644 ---- a/shared/missing.h -+++ b/shared/missing.h -@@ -15,6 +15,13 @@ - # define MODULE_INIT_IGNORE_VERMAGIC 2 - #endif - -+#ifndef MODULE_REPLACE_MODULE -+# define MODULE_REPLACE_MODULE 0x1000 -+#else -+_Static_assert(MODULE_REPLACE_MODULE == 0x1000, -+ "MODULE_REPLACE_MODULE != 0x1000, change `KMOD_INSERT_REPLACE` and `KMOD_PROBE_REPLACE` defination"); -+#endif -+ - #ifndef __NR_finit_module - # define __NR_finit_module -1 - #endif -diff --git a/tools/insmod.c b/tools/insmod.c -index c422971..f0be196 100644 ---- a/tools/insmod.c -+++ b/tools/insmod.c -@@ -29,9 +29,10 @@ - - #include "kmod.h" - --static const char cmdopts_s[] = "psfVh"; -+static const char cmdopts_s[] = "psfVrh"; - static const struct option cmdopts[] = { - {"version", no_argument, 0, 'V'}, -+ {"replace", no_argument, 0, 'r'}, - {"help", no_argument, 0, 'h'}, - {NULL, 0, 0, 0} - }; -@@ -42,6 +43,7 @@ static void help(void) - "\t%s [options] filename [args]\n" - "Options:\n" - "\t-V, --version show version\n" -+ "\t-r, --replace replace module\n" - "\t-h, --help show this help\n", - program_invocation_short_name); - } -@@ -90,6 +92,9 @@ static int do_insmod(int argc, char *argv[]) - case 'h': - help(); - return EXIT_SUCCESS; -+ case 'r': -+ flags |= KMOD_INSERT_REPLACE; -+ break; - case 'V': - puts(PACKAGE " version " VERSION); - puts(KMOD_FEATURES); --- -2.35.1 - diff --git a/0003-clear-file-memory-if-map-fails.patch b/0001-clear-file-memory-if-map-fails.patch similarity index 100% rename from 0003-clear-file-memory-if-map-fails.patch rename to 0001-clear-file-memory-if-map-fails.patch diff --git a/0002-Module-suspend-the-module-by-rmmod-r-option.patch b/0002-Module-suspend-the-module-by-rmmod-r-option.patch deleted file mode 100644 index d84410e0ff046dd3c86a74fc92b019e058ba2dea..0000000000000000000000000000000000000000 --- a/0002-Module-suspend-the-module-by-rmmod-r-option.patch +++ /dev/null @@ -1,91 +0,0 @@ -From 3466b9698c4372ec81ed71384e1845898b7044d0 Mon Sep 17 00:00:00 2001 -From: Ruidong Cao -Date: Fri, 25 Sep 2020 03:00:25 -0400 -Subject: [PATCH 2/2] Module: suspend the module by rmmod r option - -Signed-off-by: Ruidong Cao -Signed-off-by: fu.lin ---- - libkmod/libkmod-module.c | 2 +- - libkmod/libkmod.h | 3 +++ - shared/missing.h | 2 +- - tools/rmmod.c | 7 ++++++- - 4 files changed, 11 insertions(+), 3 deletions(-) - -diff --git a/libkmod/libkmod-module.c b/libkmod/libkmod-module.c -index fd9861a..96f462a 100644 ---- a/libkmod/libkmod-module.c -+++ b/libkmod/libkmod-module.c -@@ -846,7 +846,7 @@ KMOD_EXPORT int kmod_module_remove_module(struct kmod_module *mod, - return -ENOENT; - - /* Filter out other flags and force ONONBLOCK */ -- flags &= KMOD_REMOVE_FORCE; -+ flags &= KMOD_REMOVE_FORCE | KMOD_REMOVE_REPLACE; - flags |= KMOD_REMOVE_NOWAIT; - - err = delete_module(mod->name, flags); -diff --git a/libkmod/libkmod.h b/libkmod/libkmod.h -index a56e5b4..78d11b3 100644 ---- a/libkmod/libkmod.h -+++ b/libkmod/libkmod.h -@@ -147,6 +147,9 @@ enum kmod_remove { - KMOD_REMOVE_NOWAIT = O_NONBLOCK, /* always set */ - /* libkmod-only defines, not passed to kernel */ - KMOD_REMOVE_NOLOG = 1, -+ -+ /* custom flag */ -+ KMOD_REMOVE_REPLACE = 0x1000, - }; - - /* Insertion flags */ -diff --git a/shared/missing.h b/shared/missing.h -index 4d2253b..19fb36f 100644 ---- a/shared/missing.h -+++ b/shared/missing.h -@@ -19,7 +19,7 @@ - # define MODULE_REPLACE_MODULE 0x1000 - #else - _Static_assert(MODULE_REPLACE_MODULE == 0x1000, -- "MODULE_REPLACE_MODULE != 0x1000, change `KMOD_INSERT_REPLACE` and `KMOD_PROBE_REPLACE` defination"); -+ "MODULE_REPLACE_MODULE != 0x1000, change `KMOD_INSERT_REPLACE`, `KMOD_REMOVE_REPLACE` and `KMOD_PROBE_REPLACE` defination"); - #endif - - #ifndef __NR_finit_module -diff --git a/tools/rmmod.c b/tools/rmmod.c -index 3942e7b..1278234 100644 ---- a/tools/rmmod.c -+++ b/tools/rmmod.c -@@ -36,9 +36,10 @@ - static int verbose = DEFAULT_VERBOSE; - static int use_syslog; - --static const char cmdopts_s[] = "fsvVwh"; -+static const char cmdopts_s[] = "frsvVwh"; - static const struct option cmdopts[] = { - {"force", no_argument, 0, 'f'}, -+ {"replace", no_argument, 0, 'r'}, - {"syslog", no_argument, 0, 's'}, - {"verbose", no_argument, 0, 'v'}, - {"version", no_argument, 0, 'V'}, -@@ -54,6 +55,7 @@ static void help(void) - "\t-f, --force forces a module unload and may crash your\n" - "\t machine. This requires Forced Module Removal\n" - "\t option in your kernel. DANGEROUS\n" -+ "\t-r, --replace replace module\n" - "\t-s, --syslog print to syslog, not stderr\n" - "\t-v, --verbose enables more messages\n" - "\t-V, --version show version\n" -@@ -120,6 +122,9 @@ static int do_rmmod(int argc, char *argv[]) - case 'f': - flags |= KMOD_REMOVE_FORCE; - break; -+ case 'r': -+ flags |= KMOD_REMOVE_REPLACE; -+ break; - case 's': - use_syslog = 1; - break; --- -2.35.1 - diff --git a/kmod.changes b/kmod.changes index 894f12830ba9aa3a581e1b7302224fe1cf1e99f1..6a5d4660c23fe55cc3dd6807bb12bfeff95b2a92 100644 --- a/kmod.changes +++ b/kmod.changes @@ -1,4 +1,7 @@ %changelog +* Thu Jul 07 2025 Liu Chao - 30-5 +- remove the obsolete kernel module replace feature + * Tue May 07 2024 guoqinglan - 30-3 - Reinitialize libtool to remove Rpath diff --git a/kmod.spec b/kmod.spec index b61184d50dacacdf8d8e1ffc6022c6d69f65613d..8a1a648e2d0ab03e123c53365cc80cfecaa41f42 100644 --- a/kmod.spec +++ b/kmod.spec @@ -1,6 +1,6 @@ Name: kmod Version: 30 -Release: 4 +Release: 5 Summary: Kernel module management # GPLv2+ is used by programs, LGPLv2+ is used for libraries. License: GPLv2+ and LGPLv2+ @@ -14,9 +14,8 @@ BuildRequires: gcc chrpath zlib-devel xz-devel libxslt openssl-devel libtool gt Provides: module-init-tools = 4.0-1 Provides: /sbin/modprobe -Patch: 0001-Module-replace-the-module-with-new-module.patch -Patch: 0002-Module-suspend-the-module-by-rmmod-r-option.patch -Patch: 0003-clear-file-memory-if-map-fails.patch + +Patch0001: 0001-clear-file-memory-if-map-fails.patch %description The kmod package provides several commands to manage the kernel modules,