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