Home | History | Annotate | Download | only in kmod
      1 kmod 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 
     48 kmod 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 
     71 kmod 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 
     89 kmod 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 
    118 kmod 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 
    139 kmod 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 
    160 kmod 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 
    200 kmod 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 
    223 kmod 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 
    244 kmod 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 
    274 kmod 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 
    292 kmod 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 
    308 kmod 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 
    327 kmod 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 
    349 kmod 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 
    359 kmod 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 
    387 kmod 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 
    406 kmod 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 
    419 kmod 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 
    431 kmod 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 
    451 kmod 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 
    475 kmod 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 
    507 kmod 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 
    531 kmod 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 
    559 kmod 2
    560 ======
    561 
    562 Some bugs fixed: the worst of them was with an infinite loop when an alias
    563 matched 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 (a] vger.kernel.org became the official mailing list for kmod
    590 
    591 kmod 1
    592 ======
    593 
    594 First version of kmod and its library, libkmod.
    595 
    596 In 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 
    609 Tools 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