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 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 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 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 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 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 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 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 212 tools, making the binary size of tools smaller. 213 - Clarify tools vs library licenses 214 - static-nodes: when writing in tmpfiles format, indicate that 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 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 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 274kmod 16 275======= 276 277- Bug fixes: 278 - Fix usage of readdir_r() 279 - Add some missing checks for memory allocation errors 280 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. 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 290 - Use cleanup attribute 291 292kmod 15 293======= 294 295- Bug fixes: 296 - kmod static-nodes doesn't fail if modules.devname isn't available 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) 300 301- New features: 302 - kmod static-nodes creates parent directories if given a -o option 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 307 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 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 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 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 376 now: man page and usage() say nothing about it and if it's used, 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 387kmod 10 388======= 389 390- New features: 391 - Read coresize from /sys if supported 392 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. 395 This is needed to fix a change in behavior regarding module-init-tools 396 and ultimately makes us loading a blacklisted module. 397 398- Better formatting in man pages 399 400- Add option to disable building man pages at build time 401 402- Fixes in the testsuite and refactoring of LDPRELOAD'ed libraries 403 404- Re-licensing testsuite as LGPL 405 406kmod 9 407====== 408 409- Improvements to the testsuite: 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 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 418 419kmod 8 420====== 421 422- No new features, small bug fixes only. 423 - Fix a bug in "modprobe -c" output: be compatible with 424 module-init-tools 425 426 - Give a useful error message when init_module fails due to bad 427 parameter or unknown symbols 428 429 - Fix doc generation 430 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 440- Fix setting CFLAGS/LDFLAGS in build system. This prevented us from not 441 allowing the user to set his preferences. 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 450 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 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 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 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 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 591kmod 1 592====== 593 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) 615