1kmod 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 14kmod 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 63kmod 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 110kmod 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 133kmod 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 151kmod 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 180kmod 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 201kmod 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 222kmod 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 262kmod 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 285kmod 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 306kmod 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 336kmod 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 354kmod 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 370kmod 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 389kmod 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 411kmod 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 421kmod 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 449kmod 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 468kmod 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 481kmod 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 493kmod 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 513kmod 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 537kmod 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 569kmod 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 593kmod 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 621kmod 2 622====== 623 624Some bugs fixed: the worst of them was with an infinite loop when an alias 625matched 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 653kmod 1 654====== 655 656First version of kmod and its library, libkmod. 657 658In 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 671Tools 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) 677