[ SEA-GHOST MINI SHELL]
kmod 20
=======
- Bug fixes:
- Handle bogus values from ELF, making sure they don't overflow while
parsing the file
- Fix leak in depmod when -b flag is passed multiple times
- Multiple minor fixes from static analysis by coverity and
clang-analyze
- Fix race between loading modules and checking if it's loaded in the
kernel
- New features:
- There's a change in behavior regarding builtin modules: we now only
consider as builtin those that are present in modules.builtin index.
Previously we were also checking the presence of
/sys/module/<module-name>, but this is racy and only modules that
contain parameters are the ones creating a directory in sysfs.
Now some commands will start to fail, e.g. "modprobe vt". Since vt
can't be compiled as a module it's not present in modules.builtin
index. Previously we would report at as builtin, but now we fail
because we couldn't find the module.
- Improvements:
- Integration of gcov into the build. Currently libkmod is at ~70%
covered and tools at ~50% by tests in the testsuite. Utility
functions and structures in shared have more than 90% of coverage.
- Upload build to coverity
- Improvements to testsuite:
- Fix parsing return codes of init_module() calls
- Add tests for utility functions in shared/
- Add tests for kmod_module_remove_module()
- Add playground, in which our own modules are compiled
- Port all tests to use modules from module-playground instead of
copying prebuilt modules to the repository
- Properly handle binaries that exit with no output
- Besides comparing the output of commands, allow to copy to
stdout/stderr
kmod 19
=======
- Bug fixes:
- Fix missing CLOEXEC in library
- Fix error message while opening kmod's index
- New features:
- Add kmod(8) man page
- Allow to build with libc's without be32toh()
- Move code around separating common code and data structures into a
shared directory. This allows to share more code between library and
tools, making the binary size of tools smaller.
- Clarify tools vs library licenses
- static-nodes: when writing in tmpfiles format, indicate that
creation of static nodes should only happen at boot. This is used and
required by systemd-217+.
- Improvements to testsuite:
- Add tests for newly created shared/ code
- Improve how tests are declared so there's less boilerplate code for
each test.
kmod 18
=======
- Bug fixes:
- Fix leaks in error paths
- Fix use-after-free in hash implementation causing a wrong index to be
generated by depmod with out-of-tree modules
- New features:
- Calling depmod with modules creating a dependency loop will now make
depmod return an error and not update the indexes. This is to protect
the current index not being overridden by another index that may cause
a boot failure, depending on the buggy module. It's a necessary
change in behavior regarding previous kmod releases and
module-init-tools. The error message was also improved to output
the modules that caused the dependency cycle.
- Improvements to testsuite:
- Fix and improve expected-fail test
- Add tests for hashmap implementation
kmod 17
=======
- Bug fixes:
- Fix matching a "." in kernel cmdline, making garbage in the command
line be parsed as kmod options
- Fix man pages to clarify we don't fallback to parsing modules.dep
but instead we depend on modules.dep.bin (generated by depmod) to
be present
- Fix ELF parsing on 32 bit systems assigning the wrong class.
- Fix partial matches of search directives in depmod. Previously having
a line in depmod.conf such as "search foo foobar built-in" would cause
unpretictable results because foo is a partial match of foobar as well.
- Fix unaligned access in modinfo when getting the signature from a
module
- Make sure softdeps are treated as optional dependencies
- New features:
- Accept special files given to "-C" switch in modprobe. This way it's
possible to skip system configuration with "modprobe -C /dev/null"
- Do not require xsltproc on released tarballs
- Don't use Werror anymore
- Add experimental python bindings, merged from python-kmod repository
(https://github.com/agrover/python-kmod)
- Parse softdeps exported by the kernel as
/lib/modules/`uname -r`/modules.softdep
- Improvements to testsuite:
- Check the list of loaded modules after a test
kmod 16
=======
- Bug fixes:
- Fix usage of readdir_r()
- Add some missing checks for memory allocation errors
- New features:
- Remove option from libkmod to allow waiting on module removal if
the module is being used. It's dangerous since it can block the
caller indefinitely.
- Improve compatibility with musl libc
- Add fallback implementation for compilers without _Static_assert(),
e.g. gcc < 4.6
- Minor optimizations to the hash table
- Make depmod warn if a module has incorrect devname specification
- Use cleanup attribute
kmod 15
=======
- Bug fixes:
- kmod static-nodes doesn't fail if modules.devname isn't available
- Fix getting boolean parameter from kernel cmdline in case the value
is omitted
- Fix some mkdir_p() corner cases (used in testsuite and static-nodes)
- New features:
- kmod static-nodes creates parent directories if given a -o option
- kmod binary statically links to libkmod - if distro is only interested
in the kmod tool (for example in an initrd) it can refrain from
installing the library
- Add shell completion for kmod tool
kmod 14
=======
- Bug fixes:
- Fix some format strings
- Protect against NULL being passed around to index
- Avoid calling syscall() with -1 when finit_module() is not available,
since this doesn't always work
- Fix not being able to remove alias due to checking the module's
refcount
- Minor fixes and refactors
- New features:
- Improve libkmod documentation, particularly on how flags are dealt
with.
- Remove ability to build a static libkmod
- Add static-nodes command to kmod that parses modules.devname
generating output in useful formats
kmod 13
=======
- Bug fixes:
- Add the long option --symbol-prefix option to depmod (it was absent)
and fix its behavior
- Don't abort if there's a bogus line in configuration file like "alias
psmouse off". Some distros are carrying this since the days of
modutils
- New features:
- Add support for finit_module(2). If the module is load straight from
the disk and without compression we use finit_module() syscall when
available, falling back to init_module() otherwise
- kmod_module_get_info() also returns the signature if the module is
signed and modinfo uses it
- Use secure_getenv if available
- rmmod understands builtin modules, just like modprobe does
- Improve compatibility with musl-libc
- Test cases exit with success when receiving a signal if they are
xfail tests
kmod 12
=======
- Bug fixes:
- Fix removing vermagic from module when told to force load a module
- Fix removing __versions section when told to force load a module: we
need to mangle the section header, not the section.
- modinfo no longer fails while loading a module from file when path
contains ".ko" substring
kmod 11
=======
- Improvements to testsuite:
- Fix testsuite defining symbols twice on 32 bit systems
- Allow to check generated files against correct ones
- New features:
- libkmod now keeps a file opened after the first call to
kmod_module_get_{info,versions,symbols,dependency_symbols}. This
reduces signficantly the amount of time depmod tool takes to
execute. Particularly if compressed modules are used.
- Remove --with-rootprefix from build system. It was not a great idea
after all and should not be use since it causes more harm then
benefits.
- Hide --wait option on rmmod. This feature is being targeted for
removal from kernel. rmmod still accepts this option, but it's hidden
now: man page and usage() say nothing about it and if it's used,
user will get a 10s sleep. This way we can check and help if anyone
is using this feature.
- Refactor message logging on all tools, giving proper prefix, routing
everything to syslog when asked for, etc.
- Bug fixes:
- Fix parsing of modules.order when using compressed modules
- Usage messages go to stdout instead of stderr
- Fix memory leak in hash implementation
kmod 10
=======
- New features:
- Read coresize from /sys if supported
- Add flag to kmod_module_probe_insert() to apply blacklisting during
probe only if mod is an alias. Now modprobe uses this flag by default.
This is needed to fix a change in behavior regarding module-init-tools
and ultimately makes us loading a blacklisted module.
- Better formatting in man pages
- Add option to disable building man pages at build time
- Fixes in the testsuite and refactoring of LDPRELOAD'ed libraries
- Re-licensing testsuite as LGPL
kmod 9
======
- Improvements to the testsuite:
- Check for correct handling of softdep loops
- Check for correct handling of install command loops
- Bug fixes:
- Fix build with compilers that don't support --gc-sections
- Handle errors when dealing with gzipped modules
- depmod now handles errors while writing indices, so it doesn't end up
with a corrupted index without telling the user
kmod 8
======
- No new features, small bug fixes only.
- Fix a bug in "modprobe -c" output: be compatible with
module-init-tools
- Give a useful error message when init_module fails due to bad
parameter or unknown symbols
- Fix doc generation
kmod 7
======
- Re-order dirs for configuration files to match the change in systemd and
udev: now the priority is:
1. /etc/modprobe.d
2. /run/modprobe.d
3. /lib/modprobe.d
- Fix setting CFLAGS/LDFLAGS in build system. This prevented us from not
allowing the user to set his preferences.
- Bug fixes:
- Return same error codes of module-init-tools when removing modules
with modprobe
- Fix builtin output in "--show-depends" when target kernel is not the
same of the running kernel
- 'modprobe -r' always look at all command line arguments
- Fix '-q' usage in modprobe
kmod 6
======
- New API in libkmod:
- kmod_module_apply_filter(): a generic function to apply filters in a
list of modules. This deprecates the use of
kmod_module_get_filtered_blacklist()
- More tests in testsuite
- Add compatibility with uClibc again
- Lookup modules.builtin.bin to decide if a module is built in kernel
- Downgrade some log messages so we don't annoy people with useless messages
- Bug fixes:
- Flag --ignore-loaded was not being properly handled
- Infinite loop with softdeps
- Infinite loop with dumb user configuration with install commands
- Fix leak in index when there's a partial match
- Move repository and tarballs to kernel.org
kmod 5
======
- Break libkmod's API to insert a module like modprobe does. It now accepts
extra an extra argument to print its action and acceptable flags were
sanitized.
- Share more code between modprobe and libkmod: using the new version of
kmod_module_probe_insert_module() it's possible to share a great amount of
code between modprobe and libkmod
- modprobe no longer works with paths: it only accepts module names and/or
aliases now.
- testsuite was added to repository, allowing automated tests to be run and
easing the way bugs are reproduced.
- modprobe: when dumping configuration ('-c' option) separate config
and indexes by adding a commented line between them.
- Fix bugs wrt normalizing aliases and module names
- Fix bug wrt inserting an alias that resolves to multiple modules: we should
not stop on the first error, but rather continue to try loading other
modules.
- Fix unaligned memory access in hash function, causing depmod to output wrong
information in ARMv5
- Fix man page build and install: now they are only installed if tools are
enabled
kmod 4
======
- New APIs in libkmod to:
- Get configuration lists: blacklists, install commands, remove
commands, aliases, options and softdeps
- Dump indexes
- Several bugs fixed in libkmod, modprobe, depmod and modinfo
- API documentation: if configure with run with --enable-gtk-doc, the API doc
will be generated by make. Gtk-doc is required for that.
- Man pages are built, which replace man pages from module-init-tools
- 'include' and 'config' options in *.conf files were deprecated
- configure is not run by autogen.sh. Instead, a common set of options is
printed. If you are hacking on kmod, consider using bootstrap-configure
script.
- 'modprobe -c' works as expected now. As opposed to module-init-tools, it
dumps the parsed configuration, not only the file contents.
kmod 3
======
- New APIs in libkmod to:
- Get symbols from module, parsing the ELF section
- Get dependency symbols
- Check if resources are still valid or if libkmod must be reloaded
- Insert module like modprobe, checking (soft-)dependencies, commands,
blacklist. It can run commands by itself and to call a callback
function.
- Support to load modules compressed with xz
- Tools are now bundled together in a single tool called kmod. It can be
called using symlinks with the same names as tools from module-init-tools.
E.g: /usr/bin/lsmod -> /usr/bin/kmod. With this we are aiming to complete a
1:1 replacement of module-init-tools.
- The only missing tool, depmod, was added to kmod together with the necessary
APIs in libkmod.
- If a program using libkmod runs for a long time, as for example udev, it must
check if it doesn't have to re-load libkmod. A new helper function was added
in libkmod to check if context is still valid and udev is already using it.
- An 'unaligned access' bug was fixed. So those architecture that does not
handle unaligned access can use kmod, too.
kmod 2
======
Some bugs fixed: the worst of them was with an infinite loop when an alias
matched more than one module.
- New APIs in libkmod to:
- Get soft dependencies
- Get info from module files parsing ELF
- Get modversions from files parsing ELF
- Support to load gzipped kernel modules: kmod can be compiled with support to
gzipped modules by giving the --enable-zlib flag
- Support to forcefully load modules, both vermagic and modversion
- Support to force and nowait removal flags
- Configuration files are parsed in the same order as modprobe: files are
sorted alphabetically (independently of their dir) and files with the same
name obey a precedence order
- New tool: kmod-modinfo
- kmod-modprobe gained several features to be a 1:1 replacement for modprobe.
The only missing things are the options '--showconfig' and '-t / -l'. These
last ones have been deprecated long ago and they will be removed from
modprobe. A lot of effort has been put on kmod-modprobe to ensure it
maintains compabitility with modprobe.
- linux-modules@vger.kernel.org became the official mailing list for kmod
kmod 1
======
First version of kmod and its library, libkmod.
In the libkmod it's currently possible to:
- List modules currently loaded
- Get information about loaded modules such as initstate, refcount,
holders, sections, address and size
- Lookup modules by alias, module name or path
- Insert modules: options from configuration and extra options can be
passed, but flags are not implemented, yet
- Remove modules
- Filter list of modules using blacklist
- For each module, get the its list of options and install/remove
commands
- Indexes can be loaded on startup to speedup lookups later
Tools provided with the same set of options as in module-init-tools:
- kmod-lsmod
- kmod-insmod
- kmod-rmmod
- kmod-modprobe, with some functionality still missing (use of softdep,
dump configuration, show modversions)
SEA-GHOST - SHELL CODING BY SEA-GHOST