diff options
Diffstat (limited to 'core/kmod')
9 files changed, 0 insertions, 493 deletions
diff --git a/core/kmod/0001-depmod-fix-hash-lookup-by-relpath-instead-of-uncrelp.patch b/core/kmod/0001-depmod-fix-hash-lookup-by-relpath-instead-of-uncrelp.patch deleted file mode 100644 index ae5757016..000000000 --- a/core/kmod/0001-depmod-fix-hash-lookup-by-relpath-instead-of-uncrelp.patch +++ /dev/null @@ -1,43 +0,0 @@ -From 06294621a944e4611e15ce8201df80870e052e7d Mon Sep 17 00:00:00 2001 -From: Lucas De Marchi <lucas.demarchi@profusion.mobi> -Date: Fri, 16 Nov 2012 11:35:30 -0200 -Subject: [PATCH 1/2] depmod: fix hash lookup by relpath instead of uncrelpath - -We index modules in depmod by it's uncompressed relative path, not -relative path. We didn't notice this bug before since this function is -only triggered if we release a module to be replaced by one of higher -priority. - -Also fix a leftover log message referring to relpath instead of -uncrelpath. ---- - tools/depmod.c | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/tools/depmod.c b/tools/depmod.c -index cc9346f..aafe66b 100644 ---- a/tools/depmod.c -+++ b/tools/depmod.c -@@ -1114,7 +1114,7 @@ static int depmod_module_add(struct depmod *depmod, struct kmod_module *kmod) - mod->uncrelpath, mod); - if (err < 0) { - ERR("hash_add_unique %s: %s\n", -- mod->relpath, strerror(-err)); -+ mod->uncrelpath, strerror(-err)); - hash_del(depmod->modules_by_name, mod->modname); - goto fail; - } -@@ -1134,8 +1134,8 @@ static int depmod_module_del(struct depmod *depmod, struct mod *mod) - { - DBG("del %p kmod=%p, path=%s\n", mod, mod->kmod, mod->path); - -- if (mod->relpath != NULL) -- hash_del(depmod->modules_by_uncrelpath, mod->relpath); -+ if (mod->uncrelpath != NULL) -+ hash_del(depmod->modules_by_uncrelpath, mod->uncrelpath); - - hash_del(depmod->modules_by_name, mod->modname); - --- -1.8.0 - diff --git a/core/kmod/0001-depmod-fix-parsing-of-modules.order-with-compressed-.patch b/core/kmod/0001-depmod-fix-parsing-of-modules.order-with-compressed-.patch deleted file mode 100644 index 8c4ecf83c..000000000 --- a/core/kmod/0001-depmod-fix-parsing-of-modules.order-with-compressed-.patch +++ /dev/null @@ -1,165 +0,0 @@ -From 88c247f7f18ac25181ddcaff97fbbecbd3a29f57 Mon Sep 17 00:00:00 2001 -From: Lucas De Marchi <lucas.de.marchi@gmail.com> -Date: Wed, 3 Oct 2012 16:28:24 -0300 -Subject: [PATCH] depmod: fix parsing of modules.order with compressed modules - -We now index the modules by uncompressed-relative-path instead of -relative-path. This is because the file modules.order, coming from -kernel, always comes with uncompressed paths. This fixes the issue of -not sorting the aliases correctly due to paths not matching when using -compressed modules. ---- - tools/depmod.c | 46 +++++++++++++++++++++++++++++----------------- - 1 file changed, 29 insertions(+), 17 deletions(-) - -diff --git a/tools/depmod.c b/tools/depmod.c -index 0bf2dea..ff19d6e 100644 ---- a/tools/depmod.c -+++ b/tools/depmod.c -@@ -39,6 +39,8 @@ - #define DEFAULT_VERBOSE LOG_WARNING - static int verbose = DEFAULT_VERBOSE; - -+#define KMOD_EXT_UNC 0 -+ - static const struct kmod_ext { - const char *ext; - size_t len; -@@ -1001,6 +1003,7 @@ struct mod { - uint16_t idx; /* index in depmod->modules.array */ - uint16_t users; /* how many modules depend on this one */ - uint8_t dep_loop : 1; -+ char *uncrelpath; /* same as relpath but ending in .ko */ - char modname[]; - }; - -@@ -1014,7 +1017,7 @@ struct depmod { - const struct cfg *cfg; - struct kmod_ctx *ctx; - struct array modules; -- struct hash *modules_by_relpath; -+ struct hash *modules_by_uncrelpath; - struct hash *modules_by_name; - struct hash *symbols; - unsigned int dep_loops; -@@ -1025,6 +1028,7 @@ static void mod_free(struct mod *mod) - DBG("free %p kmod=%p, path=%s\n", mod, mod->kmod, mod->path); - array_free_array(&mod->deps); - kmod_module_unref(mod->kmod); -+ free(mod->uncrelpath); - free(mod); - } - -@@ -1066,10 +1070,10 @@ static int depmod_init(struct depmod *depmod, struct cfg *cfg, - - array_init(&depmod->modules, 128); - -- depmod->modules_by_relpath = hash_new(512, NULL); -- if (depmod->modules_by_relpath == NULL) { -+ depmod->modules_by_uncrelpath = hash_new(512, NULL); -+ if (depmod->modules_by_uncrelpath == NULL) { - err = -errno; -- goto modules_by_relpath_failed; -+ goto modules_by_uncrelpath_failed; - } - - depmod->modules_by_name = hash_new(512, NULL); -@@ -1089,8 +1093,8 @@ static int depmod_init(struct depmod *depmod, struct cfg *cfg, - symbols_failed: - hash_free(depmod->modules_by_name); - modules_by_name_failed: -- hash_free(depmod->modules_by_relpath); --modules_by_relpath_failed: -+ hash_free(depmod->modules_by_uncrelpath); -+modules_by_uncrelpath_failed: - return err; - } - -@@ -1100,7 +1104,7 @@ static void depmod_shutdown(struct depmod *depmod) - - hash_free(depmod->symbols); - -- hash_free(depmod->modules_by_relpath); -+ hash_free(depmod->modules_by_uncrelpath); - - hash_free(depmod->modules_by_name); - -@@ -1114,7 +1118,7 @@ static void depmod_shutdown(struct depmod *depmod) - static int depmod_module_add(struct depmod *depmod, struct kmod_module *kmod) - { - const struct cfg *cfg = depmod->cfg; -- const char *modname; -+ const char *modname, *lastslash; - size_t modnamelen; - struct mod *mod; - int err; -@@ -1134,7 +1138,8 @@ static int depmod_module_add(struct depmod *depmod, struct kmod_module *kmod) - array_init(&mod->deps, 4); - - mod->path = kmod_module_get_path(kmod); -- mod->baselen = strrchr(mod->path, '/') - mod->path; -+ lastslash = strrchr(mod->path, '/'); -+ mod->baselen = lastslash - mod->path; - if (strncmp(mod->path, cfg->dirname, cfg->dirnamelen) == 0 && - mod->path[cfg->dirnamelen] == '/') - mod->relpath = mod->path + cfg->dirnamelen + 1; -@@ -1144,25 +1149,32 @@ static int depmod_module_add(struct depmod *depmod, struct kmod_module *kmod) - err = hash_add_unique(depmod->modules_by_name, mod->modname, mod); - if (err < 0) { - ERR("hash_add_unique %s: %s\n", mod->modname, strerror(-err)); -- free(mod); -- return err; -+ goto fail; - } - - if (mod->relpath != NULL) { -- err = hash_add_unique(depmod->modules_by_relpath, -- mod->relpath, mod); -+ size_t uncrelpathlen = lastslash - mod->relpath + modnamelen -+ + kmod_exts[KMOD_EXT_UNC].len; -+ mod->uncrelpath = memdup(mod->relpath, uncrelpathlen + 1); -+ mod->uncrelpath[uncrelpathlen] = '\0'; -+ err = hash_add_unique(depmod->modules_by_uncrelpath, -+ mod->uncrelpath, mod); - if (err < 0) { - ERR("hash_add_unique %s: %s\n", - mod->relpath, strerror(-err)); - hash_del(depmod->modules_by_name, mod->modname); -- free(mod); -- return err; -+ goto fail; - } - } - - DBG("add %p kmod=%p, path=%s\n", mod, kmod, mod->path); - - return 0; -+ -+fail: -+ free(mod->uncrelpath); -+ free(mod); -+ return err; - } - - static int depmod_module_del(struct depmod *depmod, struct mod *mod) -@@ -1170,7 +1182,7 @@ static int depmod_module_del(struct depmod *depmod, struct mod *mod) - DBG("del %p kmod=%p, path=%s\n", mod, mod->kmod, mod->path); - - if (mod->relpath != NULL) -- hash_del(depmod->modules_by_relpath, mod->relpath); -+ hash_del(depmod->modules_by_uncrelpath, mod->relpath); - - hash_del(depmod->modules_by_name, mod->modname); - -@@ -1472,7 +1484,7 @@ static void depmod_modules_sort(struct depmod *depmod) - continue; - line[len - 1] = '\0'; - -- mod = hash_find(depmod->modules_by_relpath, line); -+ mod = hash_find(depmod->modules_by_uncrelpath, line); - if (mod == NULL) - continue; - mod->sort_idx = idx - total; --- -1.7.12.4 - diff --git a/core/kmod/0001-libkmod-Add-support-for-.-in-module-parameter-on-kcm.patch b/core/kmod/0001-libkmod-Add-support-for-.-in-module-parameter-on-kcm.patch deleted file mode 100644 index 4ef3d2775..000000000 --- a/core/kmod/0001-libkmod-Add-support-for-.-in-module-parameter-on-kcm.patch +++ /dev/null @@ -1,33 +0,0 @@ -From 66f3228d17d66d7e2dd484427259290fbc82b2f0 Mon Sep 17 00:00:00 2001 -From: Lucas De Marchi <lucas.demarchi@profusion.mobi> -Date: Mon, 8 Oct 2012 19:04:16 -0300 -Subject: [PATCH] libkmod: Add support for '.' in module parameter on kcmdline - -Otherwise we fail to parse arguments in kernel command line like -testmodule.testparam=1.5G - -Suggested-by: Selim T. Erdogan <selim@alumni.cs.utexas.edu> ---- - libkmod/libkmod-config.c | 6 ++++-- - 1 file changed, 4 insertions(+), 2 deletions(-) - -diff --git a/libkmod/libkmod-config.c b/libkmod/libkmod-config.c -index 70044f0..398468e 100644 ---- a/libkmod/libkmod-config.c -+++ b/libkmod/libkmod-config.c -@@ -567,8 +567,10 @@ static int kmod_config_parse_kcmdline(struct kmod_config *config) - modname = p + 1; - break; - case '.': -- *p = '\0'; -- param = p + 1; -+ if (param == NULL) { -+ *p = '\0'; -+ param = p + 1; -+ } - break; - case '=': - if (param != NULL) --- -1.7.12.4 - diff --git a/core/kmod/0001-libkmod-file-gracefully-handle-errors-from-zlib.patch b/core/kmod/0001-libkmod-file-gracefully-handle-errors-from-zlib.patch deleted file mode 100644 index 30c92b280..000000000 --- a/core/kmod/0001-libkmod-file-gracefully-handle-errors-from-zlib.patch +++ /dev/null @@ -1,35 +0,0 @@ -From c7d5a60d3df735a3816bbc1ff1b416a803a4f7a6 Mon Sep 17 00:00:00 2001 -From: Dave Reisner <dreisner@archlinux.org> -Date: Mon, 7 May 2012 19:41:41 -0400 -Subject: [PATCH 1/2] libkmod-file: gracefully handle errors from zlib - -zlib won't necessarily set the system errno, and this is particularly -evident on corrupted data (which results in a double free). Use zlib's -gzerror to detect the failure, returning a generic EINVAL when zlib -doesn't provide us with an errno. ---- - libkmod/libkmod-file.c | 8 +++++++- - 1 file changed, 7 insertions(+), 1 deletion(-) - -diff --git a/libkmod/libkmod-file.c b/libkmod/libkmod-file.c -index 46ad8d9..8beb7e3 100644 ---- a/libkmod/libkmod-file.c -+++ b/libkmod/libkmod-file.c -@@ -199,7 +199,13 @@ static int load_zlib(struct kmod_file *file) - if (r == 0) - break; - else if (r < 0) { -- err = -errno; -+ int gzerr; -+ const char *gz_errmsg = gzerror(file->gzf, &gzerr); -+ -+ ERR(file->ctx, "gzip: %s\n", gz_errmsg); -+ -+ /* gzip might not set errno here */ -+ err = gzerr == Z_ERRNO ? -errno : -EINVAL; - goto error; - } - did += r; --- -1.7.10.1 - diff --git a/core/kmod/0001-split-usr-read-configs-from-lib-depmod.d-modprobe.d.patch b/core/kmod/0001-split-usr-read-configs-from-lib-depmod.d-modprobe.d.patch deleted file mode 100644 index bf2c3501f..000000000 --- a/core/kmod/0001-split-usr-read-configs-from-lib-depmod.d-modprobe.d.patch +++ /dev/null @@ -1,50 +0,0 @@ -From 666ba68a0635048aea0db70cd9ec61aea9b61ed2 Mon Sep 17 00:00:00 2001 -From: Tom Gundersen <teg@jklm.no> -Date: Sat, 3 Mar 2012 12:37:06 +0100 -Subject: [PATCH 1/2] split usr: read configs from /lib/{depmod.d,modprobe.d} - -This allows rootprefix to be set to /usr, even if not all other packages -have been fixed to read from this dir. ---- - libkmod/libkmod.c | 5 +++-- - tools/kmod-depmod.c | 1 + - 2 files changed, 4 insertions(+), 2 deletions(-) - -diff --git a/libkmod/libkmod.c b/libkmod/libkmod.c -index 36ca629..12c1112 100644 ---- a/libkmod/libkmod.c -+++ b/libkmod/libkmod.c -@@ -62,6 +62,7 @@ static const char *default_config_paths[] = { - SYSCONFDIR "/modprobe.d", - "/run/modprobe.d", - ROOTPREFIX "/lib/modprobe.d", -+ "/lib/modprobe.d", - NULL - }; - -@@ -223,8 +224,8 @@ static char *get_kernel_release(const char *dirname) - * @config_paths: ordered array of paths (directories or files) where - * to load from user-defined configuration parameters such as - * alias, blacklists, commands (install, remove). If -- * NULL defaults to /run/modprobe.d, /etc/modprobe.d and -- * $rootprefix/lib/modprobe.d. Give an empty vector if -+ * NULL defaults to /run/modprobe.d, /etc/modprobe.d, -+ * $rootprefix/lib/modprobe.d and /lib/modprobe.d. Give an empty vector if - * configuration should not be read. This array must be null - * terminated. - * -diff --git a/tools/kmod-depmod.c b/tools/kmod-depmod.c -index 1871e18..7bb1c5d 100644 ---- a/tools/kmod-depmod.c -+++ b/tools/kmod-depmod.c -@@ -58,6 +58,7 @@ static const char *default_cfg_paths[] = { - "/run/depmod.d", - SYSCONFDIR "/depmod.d", - ROOTPREFIX "/lib/depmod.d", -+ "/lib/depmod.d", - NULL - }; - --- -1.7.9.5 - diff --git a/core/kmod/0002-config-hardcode-the-path-to-modules-to-be-lib-module.patch b/core/kmod/0002-config-hardcode-the-path-to-modules-to-be-lib-module.patch deleted file mode 100644 index 8916689f7..000000000 --- a/core/kmod/0002-config-hardcode-the-path-to-modules-to-be-lib-module.patch +++ /dev/null @@ -1,93 +0,0 @@ -From 53e7e0e42428770578ca0d54d0a9540f498f917f Mon Sep 17 00:00:00 2001 -From: Tom Gundersen <teg@jklm.no> -Date: Sat, 31 Mar 2012 12:17:39 +0200 -Subject: [PATCH 2/2] config: hardcode the path to modules to be /lib/modules - -This means that we can move the configuration paths from /lib -to /usr/lib without having to touch the kernel and related -packages. - -That can be dealt with separately at a later location, in which case -all we have to do is revert this patch. - -Signed-off-by: Tom Gundersen <teg@jklm.no> ---- - libkmod/libkmod.c | 2 +- - tools/depmod.c | 2 +- - tools/modinfo.c | 4 ++-- - tools/modprobe.c | 4 ++-- - 4 files changed, 6 insertions(+), 6 deletions(-) - -diff --git a/libkmod/libkmod.c b/libkmod/libkmod.c -index 12c1112..11edfa0 100644 ---- a/libkmod/libkmod.c -+++ b/libkmod/libkmod.c -@@ -196,7 +196,7 @@ static int log_priority(const char *priority) - return 0; - } - --static const char *dirname_default_prefix = ROOTPREFIX "/lib/modules"; -+static const char *dirname_default_prefix = "/lib/modules"; - - static char *get_kernel_release(const char *dirname) - { -diff --git a/tools/kmod-depmod.c b/tools/kmod-depmod.c -index 7bb1c5d..454d538 100644 ---- a/tools/depmod.c -+++ b/tools/depmod.c -@@ -2634,7 +2634,7 @@ static int do_depmod(int argc, char *argv[]) - } - - cfg.dirnamelen = snprintf(cfg.dirname, PATH_MAX, -- "%s" ROOTPREFIX "/lib/modules/%s", -+ "%s/lib/modules/%s", - root == NULL ? "" : root, cfg.kversion); - - if (optind == argc) -diff --git a/tools/kmod-modinfo.c b/tools/kmod-modinfo.c -index aa5223f..b13cd4b 100644 ---- a/tools/modinfo.c -+++ b/tools/modinfo.c -@@ -339,7 +339,7 @@ static void help(const char *progname) - "\t-0, --null Use \\0 instead of \\n\n" - "\t-F, --field=FIELD Print only provided FIELD\n" - "\t-k, --set-version=VERSION Use VERSION instead of `uname -r`\n" -- "\t-b, --basedir=DIR Use DIR as filesystem root for " ROOTPREFIX "/lib/modules\n" -+ "\t-b, --basedir=DIR Use DIR as filesystem root for /lib/modules\n" - "\t-V, --version Show version\n" - "\t-h, --help Show this help\n", - progname); -@@ -439,7 +439,7 @@ static int do_modinfo(int argc, char *argv[]) - } - kversion = u.release; - } -- snprintf(dirname_buf, sizeof(dirname_buf), "%s" ROOTPREFIX "/lib/modules/%s", -+ snprintf(dirname_buf, sizeof(dirname_buf), "%s/lib/modules/%s", - root, kversion); - dirname = dirname_buf; - } -diff --git a/tools/kmod-modprobe.c b/tools/kmod-modprobe.c -index 4760682..ccb41d8 100644 ---- a/tools/modprobe.c -+++ b/tools/modprobe.c -@@ -128,7 +128,7 @@ static void help(const char *progname) - "\t-n, --show Same as --dry-run\n" - - "\t-C, --config=FILE Use FILE instead of default search paths\n" -- "\t-d, --dirname=DIR Use DIR as filesystem root for " ROOTPREFIX "/lib/modules\n" -+ "\t-d, --dirname=DIR Use DIR as filesystem root for /lib/modules\n" - "\t-S, --set-version=VERSION Use VERSION instead of `uname -r`\n" - - "\t-s, --syslog print to syslog, not stderr\n" -@@ -973,7 +973,7 @@ static int do_modprobe(int argc, char **orig_argv) - kversion = u.release; - } - snprintf(dirname_buf, sizeof(dirname_buf), -- "%s" ROOTPREFIX "/lib/modules/%s", root, -+ "%s/lib/modules/%s", root, - kversion); - dirname = dirname_buf; - } --- -1.7.9.5 - diff --git a/core/kmod/0002-depmod-fix-asserting-mod-kmod-NULL.patch b/core/kmod/0002-depmod-fix-asserting-mod-kmod-NULL.patch deleted file mode 100644 index b704083dc..000000000 --- a/core/kmod/0002-depmod-fix-asserting-mod-kmod-NULL.patch +++ /dev/null @@ -1,31 +0,0 @@ -From 02c64df3c2b33880b18d3f4aba9fa8e48e5ca904 Mon Sep 17 00:00:00 2001 -From: Lucas De Marchi <lucas.demarchi@profusion.mobi> -Date: Fri, 16 Nov 2012 12:05:42 -0200 -Subject: [PATCH 2/2] depmod: fix asserting mod->kmod == NULL - -If we are replacing a lower priority module (due to its location), we -already created a kmod_module, but didn't open the file for reading its -symbols. This means mod->kmod won't be NULL, and this is just ok. Since -all the functions freeing stuff below the previous assert already takes -NULL into consideration, it's safe to just unref mod->kmod and let the -right thing happens. ---- - tools/depmod.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/tools/depmod.c b/tools/depmod.c -index aafe66b..7bbdcd3 100644 ---- a/tools/depmod.c -+++ b/tools/depmod.c -@@ -977,7 +977,7 @@ static void mod_free(struct mod *mod) - { - DBG("free %p kmod=%p, path=%s\n", mod, mod->kmod, mod->path); - array_free_array(&mod->deps); -- assert(mod->kmod == NULL); -+ kmod_module_unref(mod->kmod); - kmod_module_info_free_list(mod->info_list); - kmod_module_dependency_symbols_free_list(mod->dep_sym_list); - free(mod->uncrelpath); --- -1.8.0 - diff --git a/core/kmod/0002-depmod-report-failures-in-loading-symbols.patch b/core/kmod/0002-depmod-report-failures-in-loading-symbols.patch deleted file mode 100644 index 90c58d5da..000000000 --- a/core/kmod/0002-depmod-report-failures-in-loading-symbols.patch +++ /dev/null @@ -1,34 +0,0 @@ -From 819f79a24d58e3c8429f1631df2f8f85a2f95d4a Mon Sep 17 00:00:00 2001 -From: Dave Reisner <dreisner@archlinux.org> -Date: Mon, 7 May 2012 19:41:42 -0400 -Subject: [PATCH 2/2] depmod: report failures in loading symbols - -Previously, depmod would relegate failures of kmod_module_get_symbols() -to debug output, assuming the "error" was simply a lack of symbols. -Leave the ENOENT return to debug output, but report anything else as a -real error. ---- - tools/kmod-depmod.c | 7 +++++-- - 1 file changed, 5 insertions(+), 2 deletions(-) - -diff --git a/tools/kmod-depmod.c b/tools/kmod-depmod.c -index e89dff6..bceb407 100644 ---- a/tools/kmod-depmod.c -+++ b/tools/kmod-depmod.c -@@ -1542,8 +1542,11 @@ static int depmod_load_symbols(struct depmod *depmod) - struct kmod_list *l, *list = NULL; - int err = kmod_module_get_symbols(mod->kmod, &list); - if (err < 0) { -- DBG("ignoring %s: no symbols: %s\n", -- mod->path, strerror(-err)); -+ if (err == -ENOENT) -+ DBG("ignoring %s: no symbols\n", mod->path); -+ else -+ ERR("failed to load symbols from %s: %s\n", -+ mod->path, strerror(-err)); - continue; - } - kmod_list_foreach(l, list) { --- -1.7.10.1 - diff --git a/core/kmod/kmod.install b/core/kmod/kmod.install deleted file mode 100644 index 0a2e88dc5..000000000 --- a/core/kmod/kmod.install +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/sh - -post_upgrade() { - if [ "$(vercmp 9-2 "$2")" -eq 1 ]; then - echo "==> Kernel modules are now only read from /usr/lib/modules, all custom" - echo " built kernels and modules must be moved there before rebooting." - fi -} - |