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