2023-09-29 16:47:05

by Lucas De Marchi

[permalink] [raw]
Subject: [ANNOUNCE] kmod 31

kmod 30 is out:

https://www.kernel.org/pub/linux/utils/kernel/kmod/kmod-31.tar.xz
https://www.kernel.org/pub/linux/utils/kernel/kmod/kmod-31.tar.sign

Improvements

- Allow passing a path to modprobe so the module is loaded from
anywhere from the filesystem, but still handling the module
dependencies recorded in the indexes. This is mostly intended for kernel
developers to speedup testing their kernel modules without having to load the
dependencies manually or override the module in /usr/lib/modules/.
Now it's possible to do:

# modprobe ./drivers/gpu/drm/i915/i915.ko

As long as the dependencies didn't change, this should do the right thing

- Use in-kernel decompression if available. This will check the runtime support
in the kernel for decompressing modules and use it through finit_module().
Previously kmod would fallback to the older init_module() when using
compressed modules since there wasn't a way to instruct the kernel to
uncompress it on load or check if the kernel supported it or not.
This requires a recent kernel (>= 6.4) to have that support and
in-kernel decompression properly working in the kernel.

- Make modprobe fallback to syslog when stderr is not available, as was
documented in the man page, but not implemented

- Better explaing `modprobe -r` and how it differentiates from rmmod

- depmod learned a `-o <dir>` option to allow using a separate output
directory. With this, it's possible to split the output files from
the ones used as input from the kernel build system

- Add compat with glibc >= 2.32.9000 that dropped __xstat

- Improve testsuite to stop skipping tests when sysconfdir is something
other than /etc

- Build system improvements and updates

- Change a few return codes from -ENOENT to -ENODATA to avoid confusing output
in depmod when the module itself lacks a particular ELF section due to e.g.
CONFIG_MODVERSIONS=n in the kernel.

Bug Fixes

- Fix testsuite using uninitialized memory when testing module removal
with --wait

- Fix testsuite not correctly overriding the stat syscall on 32-bit
platforms. For most architectures this was harmless, but for MIPS it
was causing some tests to fail.

- Fix handling unknown signature algorithm

- Fix linking with a static liblzma, libzstd or zlib

- Fix memory leak when removing module holders

- Fix out-of-bounds access when using very long paths as argument to rmmod

- Fix warnings reported by UBSan


Shortlog is below:

Adam Gołębiowski (1):
autogen.sh: remove --with-rootprefix, it is gone since kmod-11

Dimitri John Ledkov (1):
build: enable building & running tests from a subdir

Dmitry Antipov (3):
libkmod, depmod: prefer -ENODATA over -ENOENT if no section found
libkmod: fix possible out-of-bounds memory access
shared: avoid passing {NULL, 0} array to bsearch()

Emil Velikov (10):
depmod: Introduce outdir option
treewide: add some static const notations
testsuite: add function declarations for __xstat family
testsuite/depmod: use defines for the rootfs/lib_modules
libkmod: error out on unknown hash algorithm
libkmod: remove unused kmod_module_get_builtin
libkmod: annotate kmod_builtin_iter API as static
shared: annotate local API as static
configure: manage libkmod.pc.in and version.py.in via AC_CONFIG_FILES
libkmod: add fallback MODULE_INIT_COMPRESSED_FILE define

Fabrice Fontaine (1):
configure.ac: fix link with -llzma

Florian Weimer (1):
kmod: configure.ac: In _Noreturn check, include <stdlib.h> for exit

Gustavo Sousa (3):
testsuite: Wrap chdir()
modprobe: Move insertion block into separate function
modprobe: Allow passing path to module

Jan Engelhardt (1):
testsuite: repair read of uninitialized memory

Julien Cristau (1):
testsuite: fix override of `stat` on 32-bit architectures

Lucas De Marchi (8):
testsuite: Move setup-rootfs logic from Makefile to script
testsuite: Handle different sysconfdir
libkmod: Do not inititialize file->memory on open
libkmod: Extract finit_module vs init_module paths
libkmod: Keep track of compression type
libkmod: Keep track of in-kernel compression support
libkmod: Use kernel decompression when available
kmod 31

Mikhail Novosyolov (1):
libkmod: do not crash on unknown signature algorithm

Nicolas Schier (1):
modprobe: rmmod_do_module: Free kmod list of holders

Quentin Armitage (1):
modprobe: Write error messages to syslog if stderr is unavailable

Yauheni Kaliuta (1):
man/rmmod: explain why modprobe -r is more useful


Thank y'all for the contributions,
Lucas De Marchi