libkmod: Fix open file which some char device
use lseek SEEK_CUR to get whether it is a regular file,
lseek return -ESPIPE when fd is associated with a pipe, socket, or FIFO.
commit 883d931d1bd04b089b85b554d1df6f41dcf5fbf5 upstream
("modprobe: Allow passing path to module") allow to modprobe a file,
but not handle opening a FIFO device such as modprobe /dev/tty1.
commit 8d03b6c7d990af301950d3ecdc4b5c69fa525928 uptream
("libkmod: Use pread where appropriate") fix some cases,
such as open /dev/tty1, but not for /dev/vmnet0 or /dev/userio etc.
Can be reproduced in run lshw in root and install some vm such ad vmware,
more about the case are in the Link.
Reference: https://github.com/lyonel/lshw/pull/110
Closes: https://bugs.launchpad.net/ubuntu/+source/lshw/+bug/2069649
Closes: https://bbs.deepin.org.cn/post/291466
Reported-by: Qi Xu <xuqi@uniontech.com>
Reported-by: lionheartyu <dongshengyuan@uniontech.com>
Fixes: 883d931d1bd04 ("modprobe: Allow passing path to module")
Signed-off-by: Wentao Guan <guanwentao@uniontech.com>
Reviewed-by: Lucas De Marchi <demarchi@kernel.org>
Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com>
Link: https://github.com/kmod-project/kmod/pull/407
Signed-off-by: Lucas De Marchi <demarchi@kernel.org>
kmod is a set of tools to handle common tasks with Linux kernel modules like insert, remove, list, check properties, resolve dependencies and aliases.
These tools are designed on top of libkmod, a library that is shipped with kmod. See libkmod/README.md for more details on this library and how to use it. The aim is to be compatible with tools, configurations and indexes from module-init-tools project.
Mailing list (no subscription needed): linux-modules@vger.kernel.org
Mailing list archives: https://lore.kernel.org/linux-modules/
Signed packages: http://www.kernel.org/pub/linux/utils/kernel/kmod/
Git:
License:
LGPL-2.1-or-later for libkmod, testsuite and helper librariesGPL-2.0-or-later for tools/Irc: #kmod on irc.oftc.net
In order to compile the source code you need:
Optional dependencies, required with the default build configuration:
Typical configuration and installation
meson setup builddir/ meson compile -C builddir/ sudo meson install -C builddir/
For end-user and distributions builds, it's recommended to use:
meson setup --buildtype release builddir/
When working on kmod, use the included build-dev.ini file, as:
meson setup --native-file build-dev.ini builddir/
The testsuite can be executed with:
meson test -C builddir
It builds test kernel modules, so kernel headers need to be pre-installed. By default it tries to use the kernel header for the currently running kernel. KDIR=any environment variable can be used to tell it to use any installed kernel header or KDIR=/path/to/specific/headers when a specific one is needed. Example:
KDIR=any meson test -C builddir
Make sure to read our contributing guide and the other READMEs: libkmod and testsuite.
kmod replaced module-init-tools, which was EOL'ed in 2011. All the tools were rewritten on top of libkmod and they can be used as drop in replacements. Along the years there were a few behavior changes and new features implemented, following feedback from Linux kernel community and distros.