]> git.ipfire.org Git - thirdparty/kmod.git/blob - NEWS
kmod 29
[thirdparty/kmod.git] / NEWS
1 kmod 29
2 =======
3
4 - Improvements
5 - Add support to use /usr/local as a place for configuration files. This makes it easier
6 to install locally without overriding distro files.
7
8 - Bug fixes
9 - Fix `modinfo -F` when module is builtin: when we asked by a specific field from modinfo,
10 it was not working correctly if the module was builtin
11
12 - Documentation fixes on precedence order of /etc and /run: the correct order is
13 /etc/modprobe.d, /run/modprobe.d, /lib/modprobe.d
14
15 - Fix the priority order that we use for searching configuration files. The
16 correct one is /etc, /run, /usr/local/lib, /lib, for both modprobe.d
17 and depmo.d
18
19 - Fix kernel command line parsing when there are quotes present. Grub
20 mangles the command line and changes it from 'module.option="val with
21 spaces"' to '"module.option=val with spaces"'. Although this is weird
22 behavior and grub could have been fixed, the kernel understands it
23 correctly for builtin modules. So change libkmod to also parse it
24 correctly. This also brings another hidden behavior from the kernel:
25 newline in the kernel command line is also allowed and can be used to
26 separate options.
27
28 - Fix a memory leak, overflow and double free on error path
29
30 - Fix documentation for return value from kmod_module_get_info(): we
31 return the number of entries we added to the list
32
33 - Fix output of modules.builtin.alias.bin index: we were writing an empty file due to
34 the misuse of kmod_module_get_info()
35
36 - Infra/internal
37 - Retire integration with semaphoreci
38
39 - Declare the github mirror also as an official upstream source: now besides accepting
40 patches via mailing list, PRs on github are also acceptable
41
42 - Misc improvements to testsuite, so we can use it reliably regardless
43 of the configuration used: now tests will skip if we don't have the
44 build dependencies)
45
46
47 kmod 28
48 =======
49
50 - Improvements
51 - Add Zstandard to the supported compression formats using libzstd
52 (pass --with-zstd to configure)
53
54 - Bug fixes
55 - Ignore ill-formed kernel command line, e.g. with "ivrs_acpihid[00:14.5]=AMD0020:0"
56 option in it
57 - Fix some memory leaks
58 - Fix 0-length builtin.alias.bin: it needs at least the index header
59
60 kmod 27
61 =======
62
63 - Improvements
64 - Link to libcrypto rather than requiring openssl
65
66 - Print a better error message when kernel doesn't support module unload
67
68 - Use PKCS#7 instead of CMS for parsing module signature to be
69 compatible with LibreSSL and OpenSSL < 1.1.0
70
71 - Teach modinfo to parse modules.builtin.modinfo. When using Linux kernel
72 >= v5.2-rc1 it's possible to get module information from this new file. Now
73 modinfo is able to show it instead of an error message that the module is
74 built-in:
75
76 Before:
77 $ modinfo ext4
78 modinfo: ERROR: Module ext4 not found.
79
80 After:
81 $ modinfo ext4
82 name: ext4
83 filename: (builtin)
84 softdep: pre: crc32c
85 license: GPL
86 description: Fourth Extended Filesystem
87 author: Remy Card, Stephen Tweedie, Andrew Morton, Andreas Dilger, Theodore Ts'o and others
88 alias: fs-ext4
89 alias: ext3
90 alias: fs-ext3
91 alias: ext2
92 alias: fs-ext2
93
94 - Bug fixes
95 - Do not link python bindings with libpython to be compatible with
96 python3.8
97
98 - Fix module removal with `modprobe -r` when a dependency is built-in.
99 Now it properly ignores them and proceed with removal of other
100 dependencies
101
102 - Fix propagation of return code from install/remove commands to the
103 the probe function. The return values of kmod_module_probe_insert_module()
104 have very specific meanings, do not confuse the caller by return codes
105 from system()
106
107 - Fix softdep config parsing leading to buffer overflow
108
109 kmod 26
110 =======
111
112 - Improvements
113 - Add more error-checking in library functions and remove warnings on newer
114 toolchains
115
116 - Depmod now handles parallel invoctions better by protecting the temporary
117 files being used
118
119 - Improvements to testsuite and added tests to check the our behavior
120 regardless of the features enabled in the kernel, or libraries we link to
121
122 - Teach the --show-exports option to modprobe. This works similarly to
123 --show-modversions, but it reports the exported symbols from that module.
124 Under the hood this reads the .symtab and .strtab section rather than
125 __versions so it shows useful data even if kernel is configured without
126 modversions (CONFIG_MODVERSIONS)
127
128 - Teach pkcs7 parsing to modinfo by using openssl. This allows modinfo to
129 correctly parse the signature appended to a module by the kernel build
130 system when configured with CONFIG_MODULE_SIG_ALL, or when externally
131 signed by the distro. Traditionally modules were signed and a struct
132 was appended together with the signature to the end of the module.
133 This has changed on the kernel for pkcs#7 and now the structure isn't
134 filled out with useful information. So we have to parse the signature
135 block in order to return useful data to the user.
136
137 If kmod is linked with openssl we parse the signature and return the
138 fields as we do for other signatures. An example of the relevant part
139 on the output of modinfo is below:
140
141 Before:
142 sig_id: PKCS#7
143 signer:
144 sig_key:
145 sig_hashalgo: md4
146 After:
147 sig_id: PKCS#7
148 signer: Fedora kernel signing key
149 sig_key: 51:C4:0C:6D:7E:A5:6C:D8:8F:B4:3A:DF:91:78:4F:18:BC:D5:E4:C5
150 sig_hashalgo: sha256
151
152 If kmod is not linked to openssl we just start printing "unknonwn" in the
153 sig_hashalgo field rather than the bogus value.
154
155
156 kmod 25
157 =======
158
159 - Improvements
160 - Add module signature to modinfo output
161
162 - Add support for external directories in depmod: now there's a new
163 "external" keyword parsed by depmod when calculating the dependencies.
164 It allows to add modules to other directories which are not relative
165 to where the modules are commonly installed. This results in
166 modules.dep and friends now understanding absolute paths rather than
167 relative paths only. For more information see depmod.d(1).
168
169 - Add support for CONFIG_MODULE_REL_CRCS
170
171 - Add missing documentation references in man pages
172
173 - Handle the case in which module has a .TOC symbol already while
174 calculating dependencies
175
176 - Improve testsuite and allow to use mkosi to run testsuite in different
177 distros
178
179 kmod 24
180 =======
181
182 - Improvements:
183 - Add more information on dependency loop
184
185 - Sanitize use of strcpy and allow to grow from small strings on stack
186 (common case) to bigger strings on heap when needed
187
188 - Bug fixes
189 - Fix wrong dependency loops being reported by depmod
190
191 - Fix crashes when reporting dependency loops
192
193 - Fix parsing kernel command line containing quotes
194
195 - Fix leaks on error paths
196
197 kmod 23
198 =======
199
200 - Improvements:
201 - Don't add comment to modules.devname if it would otherwise be empty
202 to play nice with tools detecting empty files
203
204 - Allow building with BSD sed, that doesn't have -E flag
205
206 - Ignore .TOC. symbols in depmod parsing as it's for PPC64 the
207 equivalent of _GLOBAL_OFFSET_TABLE_
208
209 - Teach modinfo about PKCS#7 module signatures: it doesn't add any
210 other info besides telling the user the module is signed since
211 kernel doesn't add other info on the module section
212
213 - Bug fixes
214
215 - Fix -s and -p compat options to insmod triggering force flag
216
217 - Fix long lines from /proc/modules not being handled correctly by
218 kmod_module_new_from_loaded() and kmod_module_get_size() and several
219 other library functions that use them
220
221 - Fix crash on modinfo while checking for available signature of
222 unknown type
223
224 - Fix documentation generation with gtk-doc
225
226 kmod 22
227 =======
228
229 - Tools:
230 - Change defaul log level for tools to WARNING rather than ERROR and update
231 some log levels for current messages
232
233 - depmod doesn't fallback to uname if a bad version is passed in the command
234 line anymore. We just exit with an error.
235
236 - insmod was taught the -f flag, just like in modprobe. It was previously
237 silently ignoring it.
238
239 - libkmod
240 - New kmod_get_dirname() API to get the module directory set in the
241 context
242
243 - Bug fixes:
244 - Fix return code in error path of kmod_module_insert_module(). We were
245 previously returning ENOSYS rather than ENOENT.
246
247 kmod 21
248 =======
249
250 - New features:
251 - kmod tool started to learn the "insert" and "remove" commands that
252 are the simplified versions of the older modprobe tool. These
253 commands are still work in progress so they are hidden behind a
254 --enable-experimental flag during build. It should not be enabled
255 unless you know what you're doing.
256 - kmod tool now prints the relevant configuration options it was built
257 with when the "--version" argument is passed. This helps to mitigate
258 problems for example when the user is trying to load a compressed
259 module but kmod was built without support for the compression method.
260
261 - Improvements to testsuite:
262 - Cache built modules so it is easier to run "make check" on build
263 servers by distro maintainers. If kmod is configured with
264 --disable-test-modules the modules from cache will be used by
265 "make check". No changes to the tests are needed and all of them
266 can run fine.
267
268 kmod 20
269 =======
270 - Bug fixes:
271 - Handle bogus values from ELF, making sure they don't overflow while
272 parsing the file
273 - Fix leak in depmod when -b flag is passed multiple times
274 - Multiple minor fixes from static analysis by coverity and
275 clang-analyze
276 - Fix race between loading modules and checking if it's loaded in the
277 kernel
278
279 - New features:
280 - There's a change in behavior regarding builtin modules: we now only
281 consider as builtin those that are present in modules.builtin index.
282 Previously we were also checking the presence of
283 /sys/module/<module-name>, but this is racy and only modules that
284 contain parameters are the ones creating a directory in sysfs.
285
286 Now some commands will start to fail, e.g. "modprobe vt". Since vt
287 can't be compiled as a module it's not present in modules.builtin
288 index. Previously we would report at as builtin, but now we fail
289 because we couldn't find the module.
290
291 - Improvements:
292 - Integration of gcov into the build. Currently libkmod is at ~70%
293 covered and tools at ~50% by tests in the testsuite. Utility
294 functions and structures in shared have more than 90% of coverage.
295 - Upload build to coverity
296
297 - Improvements to testsuite:
298 - Fix parsing return codes of init_module() calls
299 - Add tests for utility functions in shared/
300 - Add tests for kmod_module_remove_module()
301 - Add playground, in which our own modules are compiled
302 - Port all tests to use modules from module-playground instead of
303 copying prebuilt modules to the repository
304 - Properly handle binaries that exit with no output
305 - Besides comparing the output of commands, allow to copy to
306 stdout/stderr
307
308 kmod 19
309 =======
310
311 - Bug fixes:
312 - Fix missing CLOEXEC in library
313 - Fix error message while opening kmod's index
314
315 - New features:
316 - Add kmod(8) man page
317 - Allow to build with libc's without be32toh()
318 - Move code around separating common code and data structures into a
319 shared directory. This allows to share more code between library and
320 tools, making the binary size of tools smaller.
321 - Clarify tools vs library licenses
322 - static-nodes: when writing in tmpfiles format, indicate that
323 creation of static nodes should only happen at boot. This is used and
324 required by systemd-217+.
325
326 - Improvements to testsuite:
327 - Add tests for newly created shared/ code
328 - Improve how tests are declared so there's less boilerplate code for
329 each test.
330
331 kmod 18
332 =======
333
334 - Bug fixes:
335 - Fix leaks in error paths
336 - Fix use-after-free in hash implementation causing a wrong index to be
337 generated by depmod with out-of-tree modules
338
339 - New features:
340 - Calling depmod with modules creating a dependency loop will now make
341 depmod return an error and not update the indexes. This is to protect
342 the current index not being overridden by another index that may cause
343 a boot failure, depending on the buggy module. It's a necessary
344 change in behavior regarding previous kmod releases and
345 module-init-tools. The error message was also improved to output
346 the modules that caused the dependency cycle.
347
348 - Improvements to testsuite:
349 - Fix and improve expected-fail test
350 - Add tests for hashmap implementation
351
352 kmod 17
353 =======
354
355 - Bug fixes:
356 - Fix matching a "." in kernel cmdline, making garbage in the command
357 line be parsed as kmod options
358 - Fix man pages to clarify we don't fallback to parsing modules.dep
359 but instead we depend on modules.dep.bin (generated by depmod) to
360 be present
361 - Fix ELF parsing on 32 bit systems assigning the wrong class.
362 - Fix partial matches of search directives in depmod. Previously having
363 a line in depmod.conf such as "search foo foobar built-in" would cause
364 unpretictable results because foo is a partial match of foobar as well.
365 - Fix unaligned access in modinfo when getting the signature from a
366 module
367 - Make sure softdeps are treated as optional dependencies
368
369 - New features:
370 - Accept special files given to "-C" switch in modprobe. This way it's
371 possible to skip system configuration with "modprobe -C /dev/null"
372 - Do not require xsltproc on released tarballs
373 - Don't use Werror anymore
374 - Add experimental python bindings, merged from python-kmod repository
375 (https://github.com/agrover/python-kmod)
376 - Parse softdeps exported by the kernel as
377 /lib/modules/`uname -r`/modules.softdep
378
379 - Improvements to testsuite:
380 - Check the list of loaded modules after a test
381
382 kmod 16
383 =======
384
385 - Bug fixes:
386 - Fix usage of readdir_r()
387 - Add some missing checks for memory allocation errors
388
389 - New features:
390 - Remove option from libkmod to allow waiting on module removal if
391 the module is being used. It's dangerous since it can block the
392 caller indefinitely.
393 - Improve compatibility with musl libc
394 - Add fallback implementation for compilers without _Static_assert(),
395 e.g. gcc < 4.6
396 - Minor optimizations to the hash table
397 - Make depmod warn if a module has incorrect devname specification
398 - Use cleanup attribute
399
400 kmod 15
401 =======
402
403 - Bug fixes:
404 - kmod static-nodes doesn't fail if modules.devname isn't available
405 - Fix getting boolean parameter from kernel cmdline in case the value
406 is omitted
407 - Fix some mkdir_p() corner cases (used in testsuite and static-nodes)
408
409 - New features:
410 - kmod static-nodes creates parent directories if given a -o option
411 - kmod binary statically links to libkmod - if distro is only interested
412 in the kmod tool (for example in an initrd) it can refrain from
413 installing the library
414 - Add shell completion for kmod tool
415
416 kmod 14
417 =======
418
419 - Bug fixes:
420 - Fix some format strings
421 - Protect against NULL being passed around to index
422 - Avoid calling syscall() with -1 when finit_module() is not available,
423 since this doesn't always work
424 - Fix not being able to remove alias due to checking the module's
425 refcount
426 - Minor fixes and refactors
427
428 - New features:
429 - Improve libkmod documentation, particularly on how flags are dealt
430 with.
431 - Remove ability to build a static libkmod
432 - Add static-nodes command to kmod that parses modules.devname
433 generating output in useful formats
434
435 kmod 13
436 =======
437
438 - Bug fixes:
439 - Add the long option --symbol-prefix option to depmod (it was absent)
440 and fix its behavior
441 - Don't abort if there's a bogus line in configuration file like "alias
442 psmouse off". Some distros are carrying this since the days of
443 modutils
444
445 - New features:
446 - Add support for finit_module(2). If the module is load straight from
447 the disk and without compression we use finit_module() syscall when
448 available, falling back to init_module() otherwise
449 - kmod_module_get_info() also returns the signature if the module is
450 signed and modinfo uses it
451 - Use secure_getenv if available
452 - rmmod understands builtin modules, just like modprobe does
453 - Improve compatibility with musl-libc
454 - Test cases exit with success when receiving a signal if they are
455 xfail tests
456
457 kmod 12
458 =======
459
460 - Bug fixes:
461 - Fix removing vermagic from module when told to force load a module
462 - Fix removing __versions section when told to force load a module: we
463 need to mangle the section header, not the section.
464 - modinfo no longer fails while loading a module from file when path
465 contains ".ko" substring
466
467 kmod 11
468 =======
469
470 - Improvements to testsuite:
471 - Fix testsuite defining symbols twice on 32 bit systems
472 - Allow to check generated files against correct ones
473
474 - New features:
475 - libkmod now keeps a file opened after the first call to
476 kmod_module_get_{info,versions,symbols,dependency_symbols}. This
477 reduces significantly the amount of time depmod tool takes to
478 execute. Particularly if compressed modules are used.
479 - Remove --with-rootprefix from build system. It was not a great idea
480 after all and should not be use since it causes more harm then
481 benefits.
482 - Hide --wait option on rmmod. This feature is being targeted for
483 removal from kernel. rmmod still accepts this option, but it's hidden
484 now: man page and usage() say nothing about it and if it's used,
485 user will get a 10s sleep. This way we can check and help if anyone
486 is using this feature.
487 - Refactor message logging on all tools, giving proper prefix, routing
488 everything to syslog when asked for, etc.
489
490 - Bug fixes:
491 - Fix parsing of modules.order when using compressed modules
492 - Usage messages go to stdout instead of stderr
493 - Fix memory leak in hash implementation
494
495 kmod 10
496 =======
497
498 - New features:
499 - Read coresize from /sys if supported
500
501 - Add flag to kmod_module_probe_insert() to apply blacklisting during
502 probe only if mod is an alias. Now modprobe uses this flag by default.
503 This is needed to fix a change in behavior regarding module-init-tools
504 and ultimately makes us loading a blacklisted module.
505
506 - Better formatting in man pages
507
508 - Add option to disable building man pages at build time
509
510 - Fixes in the testsuite and refactoring of LDPRELOAD'ed libraries
511
512 - Re-licensing testsuite as LGPL
513
514 kmod 9
515 ======
516
517 - Improvements to the testsuite:
518 - Check for correct handling of softdep loops
519 - Check for correct handling of install command loops
520
521 - Bug fixes:
522 - Fix build with compilers that don't support --gc-sections
523 - Handle errors when dealing with gzipped modules
524 - depmod now handles errors while writing indices, so it doesn't end up
525 with a corrupted index without telling the user
526
527 kmod 8
528 ======
529
530 - No new features, small bug fixes only.
531 - Fix a bug in "modprobe -c" output: be compatible with
532 module-init-tools
533
534 - Give a useful error message when init_module fails due to bad
535 parameter or unknown symbols
536
537 - Fix doc generation
538
539 kmod 7
540 ======
541
542 - Re-order dirs for configuration files to match the change in systemd and
543 udev: now the priority is:
544 1. /etc/modprobe.d
545 2. /run/modprobe.d
546 3. /lib/modprobe.d
547
548 - Fix setting CFLAGS/LDFLAGS in build system. This prevented us from not
549 allowing the user to set his preferences.
550
551 - Bug fixes:
552 - Return same error codes of module-init-tools when removing modules
553 with modprobe
554 - Fix builtin output in "--show-depends" when target kernel is not the
555 same of the running kernel
556 - 'modprobe -r' always look at all command line arguments
557 - Fix '-q' usage in modprobe
558
559 kmod 6
560 ======
561
562 - New API in libkmod:
563 - kmod_module_apply_filter(): a generic function to apply filters in a
564 list of modules. This deprecates the use of
565 kmod_module_get_filtered_blacklist()
566
567 - More tests in testsuite
568
569 - Add compatibility with uClibc again
570
571 - Lookup modules.builtin.bin to decide if a module is built in kernel
572
573 - Downgrade some log messages so we don't annoy people with useless messages
574
575 - Bug fixes:
576 - Flag --ignore-loaded was not being properly handled
577 - Infinite loop with softdeps
578 - Infinite loop with dumb user configuration with install commands
579 - Fix leak in index when there's a partial match
580
581 - Move repository and tarballs to kernel.org
582
583 kmod 5
584 ======
585
586 - Break libkmod's API to insert a module like modprobe does. It now accepts
587 extra an extra argument to print its action and acceptable flags were
588 sanitized.
589
590 - Share more code between modprobe and libkmod: using the new version of
591 kmod_module_probe_insert_module() it's possible to share a great amount of
592 code between modprobe and libkmod
593
594 - modprobe no longer works with paths: it only accepts module names and/or
595 aliases now.
596
597 - testsuite was added to repository, allowing automated tests to be run and
598 easing the way bugs are reproduced.
599
600 - modprobe: when dumping configuration ('-c' option) separate config
601 and indexes by adding a commented line between them.
602
603 - Fix bugs wrt normalizing aliases and module names
604
605 - Fix bug wrt inserting an alias that resolves to multiple modules: we should
606 not stop on the first error, but rather continue to try loading other
607 modules.
608
609 - Fix unaligned memory access in hash function, causing depmod to output wrong
610 information in ARMv5
611
612 - Fix man page build and install: now they are only installed if tools are
613 enabled
614
615 kmod 4
616 ======
617
618 - New APIs in libkmod to:
619 - Get configuration lists: blacklists, install commands, remove
620 commands, aliases, options and softdeps
621 - Dump indexes
622
623 - Several bugs fixed in libkmod, modprobe, depmod and modinfo
624
625 - API documentation: if configure with run with --enable-gtk-doc, the API doc
626 will be generated by make. Gtk-doc is required for that.
627
628 - Man pages are built, which replace man pages from module-init-tools
629
630 - 'include' and 'config' options in *.conf files were deprecated
631
632 - configure is not run by autogen.sh. Instead, a common set of options is
633 printed. If you are hacking on kmod, consider using bootstrap-configure
634 script.
635
636 - 'modprobe -c' works as expected now. As opposed to module-init-tools, it
637 dumps the parsed configuration, not only the file contents.
638
639 kmod 3
640 ======
641
642 - New APIs in libkmod to:
643 - Get symbols from module, parsing the ELF section
644 - Get dependency symbols
645 - Check if resources are still valid or if libkmod must be reloaded
646 - Insert module like modprobe, checking (soft-)dependencies, commands,
647 blacklist. It can run commands by itself and to call a callback
648 function.
649
650 - Support to load modules compressed with xz
651
652 - Tools are now bundled together in a single tool called kmod. It can be
653 called using symlinks with the same names as tools from module-init-tools.
654 E.g: /usr/bin/lsmod -> /usr/bin/kmod. With this we are aiming to complete a
655 1:1 replacement of module-init-tools.
656
657 - The only missing tool, depmod, was added to kmod together with the necessary
658 APIs in libkmod.
659
660 - If a program using libkmod runs for a long time, as for example udev, it must
661 check if it doesn't have to re-load libkmod. A new helper function was added
662 in libkmod to check if context is still valid and udev is already using it.
663
664 - An 'unaligned access' bug was fixed. So those architecture that does not
665 handle unaligned access can use kmod, too.
666
667 kmod 2
668 ======
669
670 Some bugs fixed: the worst of them was with an infinite loop when an alias
671 matched more than one module.
672
673 - New APIs in libkmod to:
674 - Get soft dependencies
675 - Get info from module files parsing ELF
676 - Get modversions from files parsing ELF
677
678 - Support to load gzipped kernel modules: kmod can be compiled with support to
679 gzipped modules by giving the --enable-zlib flag
680
681 - Support to forcefully load modules, both vermagic and modversion
682
683 - Support to force and nowait removal flags
684
685 - Configuration files are parsed in the same order as modprobe: files are
686 sorted alphabetically (independently of their dir) and files with the same
687 name obey a precedence order
688
689 - New tool: kmod-modinfo
690
691 - kmod-modprobe gained several features to be a 1:1 replacement for modprobe.
692 The only missing things are the options '--showconfig' and '-t / -l'. These
693 last ones have been deprecated long ago and they will be removed from
694 modprobe. A lot of effort has been put on kmod-modprobe to ensure it
695 maintains compabitility with modprobe.
696
697 - linux-modules@vger.kernel.org became the official mailing list for kmod
698
699 kmod 1
700 ======
701
702 First version of kmod and its library, libkmod.
703
704 In the libkmod it's currently possible to:
705 - List modules currently loaded
706 - Get information about loaded modules such as initstate, refcount,
707 holders, sections, address and size
708 - Lookup modules by alias, module name or path
709 - Insert modules: options from configuration and extra options can be
710 passed, but flags are not implemented, yet
711 - Remove modules
712 - Filter list of modules using blacklist
713 - For each module, get the its list of options and install/remove
714 commands
715 - Indexes can be loaded on startup to speedup lookups later
716
717 Tools provided with the same set of options as in module-init-tools:
718 - kmod-lsmod
719 - kmod-insmod
720 - kmod-rmmod
721 - kmod-modprobe, with some functionality still missing (use of softdep,
722 dump configuration, show modversions)