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