kmod 20 ======= - Bug fixes: - Handle bogus values from ELF, making sure they don't overflow while parsing the file - Fix leak in depmod when -b flag is passed multiple times - Multiple minor fixes from static analysis by coverity and clang-analyze - Fix race between loading modules and checking if it's loaded in the kernel - New features: - There's a change in behavior regarding builtin modules: we now only consider as builtin those that are present in modules.builtin index. Previously we were also checking the presence of /sys/module/, but this is racy and only modules that contain parameters are the ones creating a directory in sysfs. Now some commands will start to fail, e.g. "modprobe vt". Since vt can't be compiled as a module it's not present in modules.builtin index. Previously we would report at as builtin, but now we fail because we couldn't find the module. - Improvements: - Integration of gcov into the build. Currently libkmod is at ~70% covered and tools at ~50% by tests in the testsuite. Utility functions and structures in shared have more than 90% of coverage. - Upload build to coverity - Improvements to testsuite: - Fix parsing return codes of init_module() calls - Add tests for utility functions in shared/ - Add tests for kmod_module_remove_module() - Add playground, in which our own modules are compiled - Port all tests to use modules from module-playground instead of copying prebuilt modules to the repository - Properly handle binaries that exit with no output - Besides comparing the output of commands, allow to copy to stdout/stderr kmod 19 ======= - Bug fixes: - Fix missing CLOEXEC in library - Fix error message while opening kmod's index - New features: - Add kmod(8) man page - Allow to build with libc's without be32toh() - Move code around separating common code and data structures into a shared directory. This allows to share more code between library and tools, making the binary size of tools smaller. - Clarify tools vs library licenses - static-nodes: when writing in tmpfiles format, indicate that creation of static nodes should only happen at boot. This is used and required by systemd-217+. - Improvements to testsuite: - Add tests for newly created shared/ code - Improve how tests are declared so there's less boilerplate code for each test. kmod 18 ======= - Bug fixes: - Fix leaks in error paths - Fix use-after-free in hash implementation causing a wrong index to be generated by depmod with out-of-tree modules - New features: - Calling depmod with modules creating a dependency loop will now make depmod return an error and not update the indexes. This is to protect the current index not being overridden by another index that may cause a boot failure, depending on the buggy module. It's a necessary change in behavior regarding previous kmod releases and module-init-tools. The error message was also improved to output the modules that caused the dependency cycle. - Improvements to testsuite: - Fix and improve expected-fail test - Add tests for hashmap implementation kmod 17 ======= - Bug fixes: - Fix matching a "." in kernel cmdline, making garbage in the command line be parsed as kmod options - Fix man pages to clarify we don't fallback to parsing modules.dep but instead we depend on modules.dep.bin (generated by depmod) to be present - Fix ELF parsing on 32 bit systems assigning the wrong class. - Fix partial matches of search directives in depmod. Previously having a line in depmod.conf such as "search foo foobar built-in" would cause unpretictable results because foo is a partial match of foobar as well. - Fix unaligned access in modinfo when getting the signature from a module - Make sure softdeps are treated as optional dependencies - New features: - Accept special files given to "-C" switch in modprobe. This way it's possible to skip system configuration with "modprobe -C /dev/null" - Do not require xsltproc on released tarballs - Don't use Werror anymore - Add experimental python bindings, merged from python-kmod repository (https://github.com/agrover/python-kmod) - Parse softdeps exported by the kernel as /lib/modules/`uname -r`/modules.softdep - Improvements to testsuite: - Check the list of loaded modules after a test kmod 16 ======= - Bug fixes: - Fix usage of readdir_r() - Add some missing checks for memory allocation errors - New features: - Remove option from libkmod to allow waiting on module removal if the module is being used. It's dangerous since it can block the caller indefinitely. - Improve compatibility with musl libc - Add fallback implementation for compilers without _Static_assert(), e.g. gcc < 4.6 - Minor optimizations to the hash table - Make depmod warn if a module has incorrect devname specification - Use cleanup attribute kmod 15 ======= - Bug fixes: - kmod static-nodes doesn't fail if modules.devname isn't available - Fix getting boolean parameter from kernel cmdline in case the value is omitted - Fix some mkdir_p() corner cases (used in testsuite and static-nodes) - New features: - kmod static-nodes creates parent directories if given a -o option - kmod binary statically links to libkmod - if distro is only interested in the kmod tool (for example in an initrd) it can refrain from installing the library - Add shell completion for kmod tool kmod 14 ======= - Bug fixes: - Fix some format strings - Protect against NULL being passed around to index - Avoid calling syscall() with -1 when finit_module() is not available, since this doesn't always work - Fix not being able to remove alias due to checking the module's refcount - Minor fixes and refactors - New features: - Improve libkmod documentation, particularly on how flags are dealt with. - Remove ability to build a static libkmod - Add static-nodes command to kmod that parses modules.devname generating output in useful formats kmod 13 ======= - Bug fixes: - Add the long option --symbol-prefix option to depmod (it was absent) and fix its behavior - Don't abort if there's a bogus line in configuration file like "alias psmouse off". Some distros are carrying this since the days of modutils - New features: - Add support for finit_module(2). If the module is load straight from the disk and without compression we use finit_module() syscall when available, falling back to init_module() otherwise - kmod_module_get_info() also returns the signature if the module is signed and modinfo uses it - Use secure_getenv if available - rmmod understands builtin modules, just like modprobe does - Improve compatibility with musl-libc - Test cases exit with success when receiving a signal if they are xfail tests kmod 12 ======= - Bug fixes: - Fix removing vermagic from module when told to force load a module - Fix removing __versions section when told to force load a module: we need to mangle the section header, not the section. - modinfo no longer fails while loading a module from file when path contains ".ko" substring kmod 11 ======= - Improvements to testsuite: - Fix testsuite defining symbols twice on 32 bit systems - Allow to check generated files against correct ones - New features: - libkmod now keeps a file opened after the first call to kmod_module_get_{info,versions,symbols,dependency_symbols}. This reduces signficantly the amount of time depmod tool takes to execute. Particularly if compressed modules are used. - Remove --with-rootprefix from build system. It was not a great idea after all and should not be use since it causes more harm then benefits. - Hide --wait option on rmmod. This feature is being targeted for removal from kernel. rmmod still accepts this option, but it's hidden now: man page and usage() say nothing about it and if it's used, user will get a 10s sleep. This way we can check and help if anyone is using this feature. - Refactor message logging on all tools, giving proper prefix, routing everything to syslog when asked for, etc. - Bug fixes: - Fix parsing of modules.order when using compressed modules - Usage messages go to stdout instead of stderr - Fix memory leak in hash implementation kmod 10 ======= - New features: - Read coresize from /sys if supported - Add flag to kmod_module_probe_insert() to apply blacklisting during probe only if mod is an alias. Now modprobe uses this flag by default. This is needed to fix a change in behavior regarding module-init-tools and ultimately makes us loading a blacklisted module. - Better formatting in man pages - Add option to disable building man pages at build time - Fixes in the testsuite and refactoring of LDPRELOAD'ed libraries - Re-licensing testsuite as LGPL kmod 9 ====== - Improvements to the testsuite: - Check for correct handling of softdep loops - Check for correct handling of install command loops - Bug fixes: - Fix build with compilers that don't support --gc-sections - Handle errors when dealing with gzipped modules - depmod now handles errors while writing indices, so it doesn't end up with a corrupted index without telling the user kmod 8 ====== - No new features, small bug fixes only. - Fix a bug in "modprobe -c" output: be compatible with module-init-tools - Give a useful error message when init_module fails due to bad parameter or unknown symbols - Fix doc generation kmod 7 ====== - Re-order dirs for configuration files to match the change in systemd and udev: now the priority is: 1. /etc/modprobe.d 2. /run/modprobe.d 3. /lib/modprobe.d - Fix setting CFLAGS/LDFLAGS in build system. This prevented us from not allowing the user to set his preferences. - Bug fixes: - Return same error codes of module-init-tools when removing modules with modprobe - Fix builtin output in "--show-depends" when target kernel is not the same of the running kernel - 'modprobe -r' always look at all command line arguments - Fix '-q' usage in modprobe kmod 6 ====== - New API in libkmod: - kmod_module_apply_filter(): a generic function to apply filters in a list of modules. This deprecates the use of kmod_module_get_filtered_blacklist() - More tests in testsuite - Add compatibility with uClibc again - Lookup modules.builtin.bin to decide if a module is built in kernel - Downgrade some log messages so we don't annoy people with useless messages - Bug fixes: - Flag --ignore-loaded was not being properly handled - Infinite loop with softdeps - Infinite loop with dumb user configuration with install commands - Fix leak in index when there's a partial match - Move repository and tarballs to kernel.org kmod 5 ====== - Break libkmod's API to insert a module like modprobe does. It now accepts extra an extra argument to print its action and acceptable flags were sanitized. - Share more code between modprobe and libkmod: using the new version of kmod_module_probe_insert_module() it's possible to share a great amount of code between modprobe and libkmod - modprobe no longer works with paths: it only accepts module names and/or aliases now. - testsuite was added to repository, allowing automated tests to be run and easing the way bugs are reproduced. - modprobe: when dumping configuration ('-c' option) separate config and indexes by adding a commented line between them. - Fix bugs wrt normalizing aliases and module names - Fix bug wrt inserting an alias that resolves to multiple modules: we should not stop on the first error, but rather continue to try loading other modules. - Fix unaligned memory access in hash function, causing depmod to output wrong information in ARMv5 - Fix man page build and install: now they are only installed if tools are enabled kmod 4 ====== - New APIs in libkmod to: - Get configuration lists: blacklists, install commands, remove commands, aliases, options and softdeps - Dump indexes - Several bugs fixed in libkmod, modprobe, depmod and modinfo - API documentation: if configure with run with --enable-gtk-doc, the API doc will be generated by make. Gtk-doc is required for that. - Man pages are built, which replace man pages from module-init-tools - 'include' and 'config' options in *.conf files were deprecated - configure is not run by autogen.sh. Instead, a common set of options is printed. If you are hacking on kmod, consider using bootstrap-configure script. - 'modprobe -c' works as expected now. As opposed to module-init-tools, it dumps the parsed configuration, not only the file contents. kmod 3 ====== - New APIs in libkmod to: - Get symbols from module, parsing the ELF section - Get dependency symbols - Check if resources are still valid or if libkmod must be reloaded - Insert module like modprobe, checking (soft-)dependencies, commands, blacklist. It can run commands by itself and to call a callback function. - Support to load modules compressed with xz - Tools are now bundled together in a single tool called kmod. It can be called using symlinks with the same names as tools from module-init-tools. E.g: /usr/bin/lsmod -> /usr/bin/kmod. With this we are aiming to complete a 1:1 replacement of module-init-tools. - The only missing tool, depmod, was added to kmod together with the necessary APIs in libkmod. - If a program using libkmod runs for a long time, as for example udev, it must check if it doesn't have to re-load libkmod. A new helper function was added in libkmod to check if context is still valid and udev is already using it. - An 'unaligned access' bug was fixed. So those architecture that does not handle unaligned access can use kmod, too. kmod 2 ====== Some bugs fixed: the worst of them was with an infinite loop when an alias matched more than one module. - New APIs in libkmod to: - Get soft dependencies - Get info from module files parsing ELF - Get modversions from files parsing ELF - Support to load gzipped kernel modules: kmod can be compiled with support to gzipped modules by giving the --enable-zlib flag - Support to forcefully load modules, both vermagic and modversion - Support to force and nowait removal flags - Configuration files are parsed in the same order as modprobe: files are sorted alphabetically (independently of their dir) and files with the same name obey a precedence order - New tool: kmod-modinfo - kmod-modprobe gained several features to be a 1:1 replacement for modprobe. The only missing things are the options '--showconfig' and '-t / -l'. These last ones have been deprecated long ago and they will be removed from modprobe. A lot of effort has been put on kmod-modprobe to ensure it maintains compabitility with modprobe. - linux-modules@vger.kernel.org became the official mailing list for kmod kmod 1 ====== First version of kmod and its library, libkmod. In the libkmod it's currently possible to: - List modules currently loaded - Get information about loaded modules such as initstate, refcount, holders, sections, address and size - Lookup modules by alias, module name or path - Insert modules: options from configuration and extra options can be passed, but flags are not implemented, yet - Remove modules - Filter list of modules using blacklist - For each module, get the its list of options and install/remove commands - Indexes can be loaded on startup to speedup lookups later Tools provided with the same set of options as in module-init-tools: - kmod-lsmod - kmod-insmod - kmod-rmmod - kmod-modprobe, with some functionality still missing (use of softdep, dump configuration, show modversions)