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