5 - kmod tool started to learn the "insert" and "remove" commands that
6 are the simplified versions of the older modprobe tool. These
7 commands are still work in progress so they are hidden behind a
8 --enable-experimental flag during build. It should not be enabled
9 unless you know what you're doing.
10 - kmod tool now prints the relevant configuration options it was built
11 with when the "--version" argument is passed. This helps to mitigate
12 problems for example when the user is trying to load a compressed
13 module but kmod was built without support for the compression method.
15 - Improvements to testsuite:
16 - Cache built modules so it is easier to run "make check" on build
17 servers by distro maintainers. If kmod is configured with
18 --disable-test-modules the modules from cache will be used by
19 "make check". No changes to the tests are needed and all of them
25 - Handle bogus values from ELF, making sure they don't overflow while
27 - Fix leak in depmod when -b flag is passed multiple times
28 - Multiple minor fixes from static analysis by coverity and
30 - Fix race between loading modules and checking if it's loaded in the
34 - There's a change in behavior regarding builtin modules: we now only
35 consider as builtin those that are present in modules.builtin index.
36 Previously we were also checking the presence of
37 /sys/module/<module-name>, but this is racy and only modules that
38 contain parameters are the ones creating a directory in sysfs.
40 Now some commands will start to fail, e.g. "modprobe vt". Since vt
41 can't be compiled as a module it's not present in modules.builtin
42 index. Previously we would report at as builtin, but now we fail
43 because we couldn't find the module.
46 - Integration of gcov into the build. Currently libkmod is at ~70%
47 covered and tools at ~50% by tests in the testsuite. Utility
48 functions and structures in shared have more than 90% of coverage.
49 - Upload build to coverity
51 - Improvements to testsuite:
52 - Fix parsing return codes of init_module() calls
53 - Add tests for utility functions in shared/
54 - Add tests for kmod_module_remove_module()
55 - Add playground, in which our own modules are compiled
56 - Port all tests to use modules from module-playground instead of
57 copying prebuilt modules to the repository
58 - Properly handle binaries that exit with no output
59 - Besides comparing the output of commands, allow to copy to
66 - Fix missing CLOEXEC in library
67 - Fix error message while opening kmod's index
70 - Add kmod(8) man page
71 - Allow to build with libc's without be32toh()
72 - Move code around separating common code and data structures into a
73 shared directory. This allows to share more code between library and
74 tools, making the binary size of tools smaller.
75 - Clarify tools vs library licenses
76 - static-nodes: when writing in tmpfiles format, indicate that
77 creation of static nodes should only happen at boot. This is used and
78 required by systemd-217+.
80 - Improvements to testsuite:
81 - Add tests for newly created shared/ code
82 - Improve how tests are declared so there's less boilerplate code for
89 - Fix leaks in error paths
90 - Fix use-after-free in hash implementation causing a wrong index to be
91 generated by depmod with out-of-tree modules
94 - Calling depmod with modules creating a dependency loop will now make
95 depmod return an error and not update the indexes. This is to protect
96 the current index not being overridden by another index that may cause
97 a boot failure, depending on the buggy module. It's a necessary
98 change in behavior regarding previous kmod releases and
99 module-init-tools. The error message was also improved to output
100 the modules that caused the dependency cycle.
102 - Improvements to testsuite:
103 - Fix and improve expected-fail test
104 - Add tests for hashmap implementation
110 - Fix matching a "." in kernel cmdline, making garbage in the command
111 line be parsed as kmod options
112 - Fix man pages to clarify we don't fallback to parsing modules.dep
113 but instead we depend on modules.dep.bin (generated by depmod) to
115 - Fix ELF parsing on 32 bit systems assigning the wrong class.
116 - Fix partial matches of search directives in depmod. Previously having
117 a line in depmod.conf such as "search foo foobar built-in" would cause
118 unpretictable results because foo is a partial match of foobar as well.
119 - Fix unaligned access in modinfo when getting the signature from a
121 - Make sure softdeps are treated as optional dependencies
124 - Accept special files given to "-C" switch in modprobe. This way it's
125 possible to skip system configuration with "modprobe -C /dev/null"
126 - Do not require xsltproc on released tarballs
127 - Don't use Werror anymore
128 - Add experimental python bindings, merged from python-kmod repository
129 (https://github.com/agrover/python-kmod)
130 - Parse softdeps exported by the kernel as
131 /lib/modules/`uname -r`/modules.softdep
133 - Improvements to testsuite:
134 - Check the list of loaded modules after a test
140 - Fix usage of readdir_r()
141 - Add some missing checks for memory allocation errors
144 - Remove option from libkmod to allow waiting on module removal if
145 the module is being used. It's dangerous since it can block the
147 - Improve compatibility with musl libc
148 - Add fallback implementation for compilers without _Static_assert(),
150 - Minor optimizations to the hash table
151 - Make depmod warn if a module has incorrect devname specification
152 - Use cleanup attribute
158 - kmod static-nodes doesn't fail if modules.devname isn't available
159 - Fix getting boolean parameter from kernel cmdline in case the value
161 - Fix some mkdir_p() corner cases (used in testsuite and static-nodes)
164 - kmod static-nodes creates parent directories if given a -o option
165 - kmod binary statically links to libkmod - if distro is only interested
166 in the kmod tool (for example in an initrd) it can refrain from
167 installing the library
168 - Add shell completion for kmod tool
174 - Fix some format strings
175 - Protect against NULL being passed around to index
176 - Avoid calling syscall() with -1 when finit_module() is not available,
177 since this doesn't always work
178 - Fix not being able to remove alias due to checking the module's
180 - Minor fixes and refactors
183 - Improve libkmod documentation, particularly on how flags are dealt
185 - Remove ability to build a static libkmod
186 - Add static-nodes command to kmod that parses modules.devname
187 generating output in useful formats
193 - Add the long option --symbol-prefix option to depmod (it was absent)
195 - Don't abort if there's a bogus line in configuration file like "alias
196 psmouse off". Some distros are carrying this since the days of
200 - Add support for finit_module(2). If the module is load straight from
201 the disk and without compression we use finit_module() syscall when
202 available, falling back to init_module() otherwise
203 - kmod_module_get_info() also returns the signature if the module is
204 signed and modinfo uses it
205 - Use secure_getenv if available
206 - rmmod understands builtin modules, just like modprobe does
207 - Improve compatibility with musl-libc
208 - Test cases exit with success when receiving a signal if they are
215 - Fix removing vermagic from module when told to force load a module
216 - Fix removing __versions section when told to force load a module: we
217 need to mangle the section header, not the section.
218 - modinfo no longer fails while loading a module from file when path
219 contains ".ko" substring
224 - Improvements to testsuite:
225 - Fix testsuite defining symbols twice on 32 bit systems
226 - Allow to check generated files against correct ones
229 - libkmod now keeps a file opened after the first call to
230 kmod_module_get_{info,versions,symbols,dependency_symbols}. This
231 reduces signficantly the amount of time depmod tool takes to
232 execute. Particularly if compressed modules are used.
233 - Remove --with-rootprefix from build system. It was not a great idea
234 after all and should not be use since it causes more harm then
236 - Hide --wait option on rmmod. This feature is being targeted for
237 removal from kernel. rmmod still accepts this option, but it's hidden
238 now: man page and usage() say nothing about it and if it's used,
239 user will get a 10s sleep. This way we can check and help if anyone
240 is using this feature.
241 - Refactor message logging on all tools, giving proper prefix, routing
242 everything to syslog when asked for, etc.
245 - Fix parsing of modules.order when using compressed modules
246 - Usage messages go to stdout instead of stderr
247 - Fix memory leak in hash implementation
253 - Read coresize from /sys if supported
255 - Add flag to kmod_module_probe_insert() to apply blacklisting during
256 probe only if mod is an alias. Now modprobe uses this flag by default.
257 This is needed to fix a change in behavior regarding module-init-tools
258 and ultimately makes us loading a blacklisted module.
260 - Better formatting in man pages
262 - Add option to disable building man pages at build time
264 - Fixes in the testsuite and refactoring of LDPRELOAD'ed libraries
266 - Re-licensing testsuite as LGPL
271 - Improvements to the testsuite:
272 - Check for correct handling of softdep loops
273 - Check for correct handling of install command loops
276 - Fix build with compilers that don't support --gc-sections
277 - Handle errors when dealing with gzipped modules
278 - depmod now handles errors while writing indices, so it doesn't end up
279 with a corrupted index without telling the user
284 - No new features, small bug fixes only.
285 - Fix a bug in "modprobe -c" output: be compatible with
288 - Give a useful error message when init_module fails due to bad
289 parameter or unknown symbols
296 - Re-order dirs for configuration files to match the change in systemd and
297 udev: now the priority is:
302 - Fix setting CFLAGS/LDFLAGS in build system. This prevented us from not
303 allowing the user to set his preferences.
306 - Return same error codes of module-init-tools when removing modules
308 - Fix builtin output in "--show-depends" when target kernel is not the
309 same of the running kernel
310 - 'modprobe -r' always look at all command line arguments
311 - Fix '-q' usage in modprobe
316 - New API in libkmod:
317 - kmod_module_apply_filter(): a generic function to apply filters in a
318 list of modules. This deprecates the use of
319 kmod_module_get_filtered_blacklist()
321 - More tests in testsuite
323 - Add compatibility with uClibc again
325 - Lookup modules.builtin.bin to decide if a module is built in kernel
327 - Downgrade some log messages so we don't annoy people with useless messages
330 - Flag --ignore-loaded was not being properly handled
331 - Infinite loop with softdeps
332 - Infinite loop with dumb user configuration with install commands
333 - Fix leak in index when there's a partial match
335 - Move repository and tarballs to kernel.org
340 - Break libkmod's API to insert a module like modprobe does. It now accepts
341 extra an extra argument to print its action and acceptable flags were
344 - Share more code between modprobe and libkmod: using the new version of
345 kmod_module_probe_insert_module() it's possible to share a great amount of
346 code between modprobe and libkmod
348 - modprobe no longer works with paths: it only accepts module names and/or
351 - testsuite was added to repository, allowing automated tests to be run and
352 easing the way bugs are reproduced.
354 - modprobe: when dumping configuration ('-c' option) separate config
355 and indexes by adding a commented line between them.
357 - Fix bugs wrt normalizing aliases and module names
359 - Fix bug wrt inserting an alias that resolves to multiple modules: we should
360 not stop on the first error, but rather continue to try loading other
363 - Fix unaligned memory access in hash function, causing depmod to output wrong
366 - Fix man page build and install: now they are only installed if tools are
372 - New APIs in libkmod to:
373 - Get configuration lists: blacklists, install commands, remove
374 commands, aliases, options and softdeps
377 - Several bugs fixed in libkmod, modprobe, depmod and modinfo
379 - API documentation: if configure with run with --enable-gtk-doc, the API doc
380 will be generated by make. Gtk-doc is required for that.
382 - Man pages are built, which replace man pages from module-init-tools
384 - 'include' and 'config' options in *.conf files were deprecated
386 - configure is not run by autogen.sh. Instead, a common set of options is
387 printed. If you are hacking on kmod, consider using bootstrap-configure
390 - 'modprobe -c' works as expected now. As opposed to module-init-tools, it
391 dumps the parsed configuration, not only the file contents.
396 - New APIs in libkmod to:
397 - Get symbols from module, parsing the ELF section
398 - Get dependency symbols
399 - Check if resources are still valid or if libkmod must be reloaded
400 - Insert module like modprobe, checking (soft-)dependencies, commands,
401 blacklist. It can run commands by itself and to call a callback
404 - Support to load modules compressed with xz
406 - Tools are now bundled together in a single tool called kmod. It can be
407 called using symlinks with the same names as tools from module-init-tools.
408 E.g: /usr/bin/lsmod -> /usr/bin/kmod. With this we are aiming to complete a
409 1:1 replacement of module-init-tools.
411 - The only missing tool, depmod, was added to kmod together with the necessary
414 - If a program using libkmod runs for a long time, as for example udev, it must
415 check if it doesn't have to re-load libkmod. A new helper function was added
416 in libkmod to check if context is still valid and udev is already using it.
418 - An 'unaligned access' bug was fixed. So those architecture that does not
419 handle unaligned access can use kmod, too.
424 Some bugs fixed: the worst of them was with an infinite loop when an alias
425 matched more than one module.
427 - New APIs in libkmod to:
428 - Get soft dependencies
429 - Get info from module files parsing ELF
430 - Get modversions from files parsing ELF
432 - Support to load gzipped kernel modules: kmod can be compiled with support to
433 gzipped modules by giving the --enable-zlib flag
435 - Support to forcefully load modules, both vermagic and modversion
437 - Support to force and nowait removal flags
439 - Configuration files are parsed in the same order as modprobe: files are
440 sorted alphabetically (independently of their dir) and files with the same
441 name obey a precedence order
443 - New tool: kmod-modinfo
445 - kmod-modprobe gained several features to be a 1:1 replacement for modprobe.
446 The only missing things are the options '--showconfig' and '-t / -l'. These
447 last ones have been deprecated long ago and they will be removed from
448 modprobe. A lot of effort has been put on kmod-modprobe to ensure it
449 maintains compabitility with modprobe.
451 - linux-modules@vger.kernel.org became the official mailing list for kmod
456 First version of kmod and its library, libkmod.
458 In the libkmod it's currently possible to:
459 - List modules currently loaded
460 - Get information about loaded modules such as initstate, refcount,
461 holders, sections, address and size
462 - Lookup modules by alias, module name or path
463 - Insert modules: options from configuration and extra options can be
464 passed, but flags are not implemented, yet
466 - Filter list of modules using blacklist
467 - For each module, get the its list of options and install/remove
469 - Indexes can be loaded on startup to speedup lookups later
471 Tools provided with the same set of options as in module-init-tools:
475 - kmod-modprobe, with some functionality still missing (use of softdep,
476 dump configuration, show modversions)