summaryrefslogtreecommitdiffstats
path: root/NEWS
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--NEWS866
1 files changed, 866 insertions, 0 deletions
diff --git a/NEWS b/NEWS
new file mode 100644
index 0000000..00b7f6d
--- /dev/null
+++ b/NEWS
@@ -0,0 +1,866 @@
+kmod 31
+=======
+
+- Improvements
+
+ - Allow passing a path to modprobe so the module is loaded from
+ anywhere from the filesystem, but still handling the module
+ dependencies recorded in the indexes. This is mostly intended for kernel
+ developers to speedup testing their kernel modules without having to load the
+ dependencies manually or override the module in /usr/lib/modules/.
+ Now it's possible to do:
+
+ # modprobe ./drivers/gpu/drm/i915/i915.ko
+
+ As long as the dependencies didn't change, this should do the right thing
+
+ - Use in-kernel decompression if available. This will check the runtime support
+ in the kernel for decompressing modules and use it through finit_module().
+ Previously kmod would fallback to the older init_module() when using
+ compressed modules since there wasn't a way to instruct the kernel to
+ uncompress it on load or check if the kernel supported it or not.
+ This requires a recent kernel (>= 6.4) to have that support and
+ in-kernel decompression properly working in the kernel.
+
+ - Make modprobe fallback to syslog when stderr is not available, as was
+ documented in the man page, but not implemented
+
+ - Better explaing `modprobe -r` and how it differentiates from rmmod
+
+ - depmod learned a `-o <dir>` option to allow using a separate output
+ directory. With this, it's possible to split the output files from
+ the ones used as input from the kernel build system
+
+ - Add compat with glibc >= 2.32.9000 that dropped __xstat
+
+ - Improve testsuite to stop skipping tests when sysconfdir is something
+ other than /etc
+
+ - Build system improvements and updates
+
+ - Change a few return codes from -ENOENT to -ENODATA to avoid confusing output
+ in depmod when the module itself lacks a particular ELF section due to e.g.
+ CONFIG_MODVERSIONS=n in the kernel.
+
+
+- Bug Fixes
+
+ - Fix testsuite using uninitialized memory when testing module removal
+ with --wait
+
+ - Fix testsuite not correctly overriding the stat syscall on 32-bit
+ platforms. For most architectures this was harmless, but for MIPS it
+ was causing some tests to fail.
+
+ - Fix handling unknown signature algorithm
+
+ - Fix linking with a static liblzma, libzstd or zlib
+
+ - Fix memory leak when removing module holders
+
+ - Fix out-of-bounds access when using very long paths as argument to rmmod
+
+ - Fix warnings reported by UBSan
+
+kmod 30
+=======
+
+- Improvements
+ - Stop adding duplicate information on modules.builtin.alias.bin, just use
+ the modules.builtin.bin index
+
+ - Speedup depmod, particularly under qemu with emulated arch, by
+ avoiding a lot of open/read/close of modules.alias.bin. On an
+ emulated ARM rootfs, depmod with only 2 modules was taking ~32s
+ vs ~0.07s now.
+
+ - Add kmod_module_new_from_name_lookup() which allows doing a lookup by
+ module name, without considering the aliases. Other than that search
+ order is similar to kmod_module_new_from_lookup().
+
+ - modinfo learned the --modname option to explicitely show information
+ about the module, even if there is an alias with the same name. This
+ allows showing information about e.g. kernel/lib/crc32.ko, even if
+ kernel also exports a crc32 alias in modules.alias:
+
+ alias crc32 crc32_pclmul
+ alias crc32 crc32_generic
+
+ Same behavior will be used to other modules and to aliases provided
+ by user/distro.
+
+ - depmod.conf learned a new "excludedir" directive so distro/user can
+ configure more directories to be excluded from its search, besides
+ the hardcoded values "build" and "source".
+
+ - Better group modprobe options on help output under "Management, Query and General".
+
+ - modprobe learned a --wait <MSEC> option to be used together with -r
+ when removing a module. This allows modprobe to keep trying the
+ removal if it fails because the module is still in use. An exponential backoff
+ time is used for further retries.
+
+ The wait behavior provided by the kernel when not passing O_NONBLOCK
+ to delete_module() was removed in v3.13 due to not be used and the
+ consequences of having to support it in the kernel. However there may
+ be some users, particularly on testsuites for individual susbsystems, that
+ would want that. So provide a userspace implementation inside modprobe for
+ such users. "rmmod" doesn't have a --wait as it remains a bare minimal over
+ the API provided by the kernel. In future the --wait behavior can be added
+ to libkmod for testsuites not exec'ing modprobe for module removal.
+
+ - kmod_module_remove_module() learned a new flag to silence output when
+ caller wants to handle them - this is particularly important for the
+ --wait flag to modprobe, as it's not desired to keep seeing error messages
+ while waiting for the module to be unused.
+
+ - Add SM3 hash algo support to modinfo output, as already available in the kernel.
+
+- Bug Fixes
+ - Fix modinfo output when showing information for a .ko module when running
+ on a kernel that has that module as builtin.
+
+ - Fix kmod_module_new_from_lookup() returning > 0 rather than 0
+ when it matches an alias.
+
+ - Fix modinfo segfault when module doesn't exist.
+
+ - Add missing function in the html documentation: kmod_get_dirname().
+
+ - Fix modprobe incorrectly handling number of arguments when prepending values from
+ MODPROBE_OPTIONS environment variable.
+
+ - Fix modprobe -r --remove-dependencies and since "dependencies" was a
+ misnomer, add the preferred argument option: "--remove-holders". This
+ is the same name used by the kernel. It allows users to also remove
+ other modules holding the one that is being removed.
+
+ - Fix off-by-one in max module name length in depmod.
+
+- Infra/internal
+ - Start some changes in the out-of-tree test modules in kmod so they are useful
+ for being really inserted in the kernel rather than relying on kmod's mock
+ interface. This helps manual testing and may be used to exercise to test
+ changes in the kernel.
+
+kmod 29
+=======
+
+- Improvements
+ - Add support to use /usr/local as a place for configuration files. This makes it easier
+ to install locally without overriding distro files.
+
+- Bug fixes
+ - Fix `modinfo -F` when module is builtin: when we asked by a specific field from modinfo,
+ it was not working correctly if the module was builtin
+
+ - Documentation fixes on precedence order of /etc and /run: the correct order is
+ /etc/modprobe.d, /run/modprobe.d, /lib/modprobe.d
+
+ - Fix the priority order that we use for searching configuration files. The
+ correct one is /etc, /run, /usr/local/lib, /lib, for both modprobe.d
+ and depmo.d
+
+ - Fix kernel command line parsing when there are quotes present. Grub
+ mangles the command line and changes it from 'module.option="val with
+ spaces"' to '"module.option=val with spaces"'. Although this is weird
+ behavior and grub could have been fixed, the kernel understands it
+ correctly for builtin modules. So change libkmod to also parse it
+ correctly. This also brings another hidden behavior from the kernel:
+ newline in the kernel command line is also allowed and can be used to
+ separate options.
+
+ - Fix a memory leak, overflow and double free on error path
+
+ - Fix documentation for return value from kmod_module_get_info(): we
+ return the number of entries we added to the list
+
+ - Fix output of modules.builtin.alias.bin index: we were writing an empty file due to
+ the misuse of kmod_module_get_info()
+
+- Infra/internal
+ - Retire integration with semaphoreci
+
+ - Declare the github mirror also as an official upstream source: now besides accepting
+ patches via mailing list, PRs on github are also acceptable
+
+ - Misc improvements to testsuite, so we can use it reliably regardless
+ of the configuration used: now tests will skip if we don't have the
+ build dependencies)
+
+kmod 28
+=======
+
+- Improvements
+ - Add Zstandard to the supported compression formats using libzstd
+ (pass --with-zstd to configure)
+
+- Bug fixes
+ - Ignore ill-formed kernel command line, e.g. with "ivrs_acpihid[00:14.5]=AMD0020:0"
+ option in it
+ - Fix some memory leaks
+ - Fix 0-length builtin.alias.bin: it needs at least the index header
+
+kmod 27
+=======
+
+- Improvements
+ - Link to libcrypto rather than requiring openssl
+
+ - Print a better error message when kernel doesn't support module unload
+
+ - Use PKCS#7 instead of CMS for parsing module signature to be
+ compatible with LibreSSL and OpenSSL < 1.1.0
+
+ - Teach modinfo to parse modules.builtin.modinfo. When using Linux kernel
+ >= v5.2-rc1 it's possible to get module information from this new file. Now
+ modinfo is able to show it instead of an error message that the module is
+ built-in:
+
+ Before:
+ $ modinfo ext4
+ modinfo: ERROR: Module ext4 not found.
+
+ After:
+ $ modinfo ext4
+ name: ext4
+ filename: (builtin)
+ softdep: pre: crc32c
+ license: GPL
+ description: Fourth Extended Filesystem
+ author: Remy Card, Stephen Tweedie, Andrew Morton, Andreas Dilger, Theodore Ts'o and others
+ alias: fs-ext4
+ alias: ext3
+ alias: fs-ext3
+ alias: ext2
+ alias: fs-ext2
+
+- Bug fixes
+ - Do not link python bindings with libpython to be compatible with
+ python3.8
+
+ - Fix module removal with `modprobe -r` when a dependency is built-in.
+ Now it properly ignores them and proceed with removal of other
+ dependencies
+
+ - Fix propagation of return code from install/remove commands to the
+ the probe function. The return values of kmod_module_probe_insert_module()
+ have very specific meanings, do not confuse the caller by return codes
+ from system()
+
+ - Fix softdep config parsing leading to buffer overflow
+
+kmod 26
+=======
+
+- Improvements
+ - Add more error-checking in library functions and remove warnings on newer
+ toolchains
+
+ - Depmod now handles parallel invoctions better by protecting the temporary
+ files being used
+
+ - Improvements to testsuite and added tests to check the our behavior
+ regardless of the features enabled in the kernel, or libraries we link to
+
+ - Teach the --show-exports option to modprobe. This works similarly to
+ --show-modversions, but it reports the exported symbols from that module.
+ Under the hood this reads the .symtab and .strtab section rather than
+ __versions so it shows useful data even if kernel is configured without
+ modversions (CONFIG_MODVERSIONS)
+
+ - Teach pkcs7 parsing to modinfo by using openssl. This allows modinfo to
+ correctly parse the signature appended to a module by the kernel build
+ system when configured with CONFIG_MODULE_SIG_ALL, or when externally
+ signed by the distro. Traditionally modules were signed and a struct
+ was appended together with the signature to the end of the module.
+ This has changed on the kernel for pkcs#7 and now the structure isn't
+ filled out with useful information. So we have to parse the signature
+ block in order to return useful data to the user.
+
+ If kmod is linked with openssl we parse the signature and return the
+ fields as we do for other signatures. An example of the relevant part
+ on the output of modinfo is below:
+
+ Before:
+ sig_id: PKCS#7
+ signer:
+ sig_key:
+ sig_hashalgo: md4
+ After:
+ sig_id: PKCS#7
+ signer: Fedora kernel signing key
+ sig_key: 51:C4:0C:6D:7E:A5:6C:D8:8F:B4:3A:DF:91:78:4F:18:BC:D5:E4:C5
+ sig_hashalgo: sha256
+
+ If kmod is not linked to openssl we just start printing "unknonwn" in the
+ sig_hashalgo field rather than the bogus value.
+
+
+kmod 25
+=======
+
+- Improvements
+ - Add module signature to modinfo output
+
+ - Add support for external directories in depmod: now there's a new
+ "external" keyword parsed by depmod when calculating the dependencies.
+ It allows to add modules to other directories which are not relative
+ to where the modules are commonly installed. This results in
+ modules.dep and friends now understanding absolute paths rather than
+ relative paths only. For more information see depmod.d(1).
+
+ - Add support for CONFIG_MODULE_REL_CRCS
+
+ - Add missing documentation references in man pages
+
+ - Handle the case in which module has a .TOC symbol already while
+ calculating dependencies
+
+ - Improve testsuite and allow to use mkosi to run testsuite in different
+ distros
+
+kmod 24
+=======
+
+- Improvements:
+ - Add more information on dependency loop
+
+ - Sanitize use of strcpy and allow to grow from small strings on stack
+ (common case) to bigger strings on heap when needed
+
+- Bug fixes
+ - Fix wrong dependency loops being reported by depmod
+
+ - Fix crashes when reporting dependency loops
+
+ - Fix parsing kernel command line containing quotes
+
+ - Fix leaks on error paths
+
+kmod 23
+=======
+
+- Improvements:
+ - Don't add comment to modules.devname if it would otherwise be empty
+ to play nice with tools detecting empty files
+
+ - Allow building with BSD sed, that doesn't have -E flag
+
+ - Ignore .TOC. symbols in depmod parsing as it's for PPC64 the
+ equivalent of _GLOBAL_OFFSET_TABLE_
+
+ - Teach modinfo about PKCS#7 module signatures: it doesn't add any
+ other info besides telling the user the module is signed since
+ kernel doesn't add other info on the module section
+
+- Bug fixes
+
+ - Fix -s and -p compat options to insmod triggering force flag
+
+ - Fix long lines from /proc/modules not being handled correctly by
+ kmod_module_new_from_loaded() and kmod_module_get_size() and several
+ other library functions that use them
+
+ - Fix crash on modinfo while checking for available signature of
+ unknown type
+
+ - Fix documentation generation with gtk-doc
+
+kmod 22
+=======
+
+- Tools:
+ - Change defaul log level for tools to WARNING rather than ERROR and update
+ some log levels for current messages
+
+ - depmod doesn't fallback to uname if a bad version is passed in the command
+ line anymore. We just exit with an error.
+
+ - insmod was taught the -f flag, just like in modprobe. It was previously
+ silently ignoring it.
+
+- libkmod
+ - New kmod_get_dirname() API to get the module directory set in the
+ context
+
+- Bug fixes:
+ - Fix return code in error path of kmod_module_insert_module(). We were
+ previously returning ENOSYS rather than ENOENT.
+
+kmod 21
+=======
+
+- New features:
+ - kmod tool started to learn the "insert" and "remove" commands that
+ are the simplified versions of the older modprobe tool. These
+ commands are still work in progress so they are hidden behind a
+ --enable-experimental flag during build. It should not be enabled
+ unless you know what you're doing.
+ - kmod tool now prints the relevant configuration options it was built
+ with when the "--version" argument is passed. This helps to mitigate
+ problems for example when the user is trying to load a compressed
+ module but kmod was built without support for the compression method.
+
+- Improvements to testsuite:
+ - Cache built modules so it is easier to run "make check" on build
+ servers by distro maintainers. If kmod is configured with
+ --disable-test-modules the modules from cache will be used by
+ "make check". No changes to the tests are needed and all of them
+ can run fine.
+
+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/<module-name>, 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 significantly 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)