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