summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2023-11-07Add /lib/modules/modprobe.d to configuration search pathtizen_9.0_m2_releaseaccepted/tizen/base/riscv/20231123.094516accepted/tizen/base/asan/20240422.014939accepted/tizen/base/20231108.225818accepted/tizen/9.0/base/20241030.075449tizen_basetizen_9.0_basesandbox/wangbiao/zstd_supportaccepted/tizen_base_riscvaccepted/tizen_base_asanaccepted/tizen_baseaccepted/tizen_9.0_baseKarol Lewandowski2-0/+2
This commit adds additional tizen-specific /lib/modules/modprobe.d to kmod search path to allow for packages providing modules to also provide its configuration. In Tizen kernel and modules images are build separately from "platform" image, meaning only limited paths can be used (/lib/modules, /hal) for its files to be accessible from the system. Change-Id: I6985339abd1234aecfb5802484bd57f36a64bab2 Signed-off-by: Karol Lewandowski <k.lewandowsk@samsung.com>
2023-11-07add packaging for kmodSeung-Woo Kim4-0/+151
Add kmod v31 package to Tizen for supporting program to manage Linux Kernel modules. Note: Change history for previous Tizen package release is below: kmod is packaged into Tizen with manifest domain of floor. v15 is a required dependency for systemd v208 (see TIVI-2197). Bump to v18 using upstream git repo instead of pristin-tar. Bug-Tizen: TC-1921 Signed-off-by: Anas Nashif <anas.nashif@intel.com> Signed-off-by: Alexandru Cornea <alexandru.cornea@intel.com> Signed-off-by: Patrick McCarty <patrick.mccarty@linux.intel.com> Signed-off-by: Kévin THIERRY <kevin.thierry@open.eurogiciel.org> Applied ASLR (CFLAG=-fPIE LDFLAG=-pie) and license file wsa added to /usr/share/licenses/kmod-compat and /usr/share/licneses/libkmod. All packaging modifications are squashed into one commit and bump to v24. Signed-off-by: Jaehoon Chung <jh80.chung@samsung.com> Signed-off-by: Inki Dae <inki.dae@samsung.com> Signed-off-by: Seung-Woo Kim <sw0312.kim@samsung.com> [yj99.shin@samsung.com: packaging : disable %check section Currently, all tizen OBS projects don't run the %check section. I think the %check section is very good for reinforcing unit tests. But, there are some hurdles because of the qemu. For starting of enabling the %check section, I disable the %check section in the failed packages.] Change-Id: Icdbea83b1625446abe492625ee424f25e377c476 Signed-off-by: Youngjae Shin <yj99.shin@samsung.com> [sw0312.kim: bump version to v31 for Tizen 9.0 bump version to v30 for Tizen 8.0 Add kmod v29 package to Tizen 7.0 M1 bump version to v27 for Tizen 6.5 packaging: remove not really necessary kmod own includedir bump version to v27 for Tizen 6.0 packaging: add -Wno-maybe-uninitialized to cflags and bump to v26 The GCC has false positive warning about maybe-uninitialized with -O2 and -fexeceptions. Add -Wno-maybe-uninitialized to cflags to remove the false positive warnings. ] Signed-off-by: Seung-Woo Kim <sw0312.kim@samsung.com>
2023-09-29kmod 31v31upstreamLucas De Marchi3-2/+66
2023-09-27libkmod: add fallback MODULE_INIT_COMPRESSED_FILE defineEmil Velikov1-0/+4
The symbol was somewhat recently introduced by the kernel and not all distributions may be have available. The number is part of the ABI, so we can add a local fallback define. Closes: https://github.com/kmod-project/kmod/issues/29 Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com> Signed-off-by: Lucas De Marchi <lucas.de.marchi@gmail.com>
2023-06-20libkmod: Use kernel decompression when availableLucas De Marchi4-6/+21
With the recent changes to bypass loading the file it's possible to reduce the work in userspace and delegating it to the kernel. Without any compression to illustrate: Before: read(3, "\177ELF\2\1", 6) = 6 lseek(3, 0, SEEK_SET) = 0 newfstatat(3, "", {st_mode=S_IFREG|0644, st_size=238592, ...}, AT_EMPTY_PATH) = 0 mmap(NULL, 238592, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7fd85cbd1000 finit_module(3, "", 0) = 0 munmap(0x7fd85cbd1000, 238592) = 0 close(3) = 0 After: read(3, "\177ELF\2\1", 6) = 6 lseek(3, 0, SEEK_SET) = 0 finit_module(3, "", 0) = 0 close(3) = 0 When using kernel compression now it's also possible to direct libkmod to take the finit_module() path, avoiding the decompression in userspace and just delegating it to the kernel. Before: read(3, "(\265/\375\244\0", 6) = 6 lseek(3, 0, SEEK_SET) = 0 read(3, "(\265/\375\244", 5) = 5 mmap(NULL, 135168, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f3fa431e000 read(3, "\0\244\3\0\\y\6", 7) = 7 mmap(NULL, 372736, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f3fa414f000 brk(0x55944c6a1000) = 0x55944c6a1000 read(3, "\356|\6G\27U\20 \312\260s\211\335\333\263\326\330\336\273O\211\356\306K\360Z\341\374U6\342\221"..., 53038) = 53038 mremap(0x7f3fa431e000, 135168, 266240, MREMAP_MAYMOVE) = 0x7f3fa410e000 read(3, ",;\3\nqf\311\362\325\211\7\341\375A\355\221\371L\\\5\7\375 \32\246<(\258=K\304"..., 20851) = 20851 mremap(0x7f3fa410e000, 266240, 397312, MREMAP_MAYMOVE) = 0x7f3fa40ad000 read(3, ")\36\250\213", 4) = 4 read(3, "", 4) = 0 munmap(0x7f3fa414f000, 372736) = 0 init_module(0x7f3fa40ad010, 238592, "") = 0 munmap(0x7f3fa40ad000, 397312) = 0 close(3) = 0 After: read(3, "(\265/\375\244P", 6) = 6 lseek(3, 0, SEEK_SET) = 0 finit_module(3, "", 0x4 /* MODULE_INIT_??? */) = 0 close(3) = 0 Signed-off-by: Lucas De Marchi <lucas.de.marchi@gmail.com>
2023-06-09libkmod: Keep track of in-kernel compression supportLucas De Marchi1-0/+37
When creating the context, read /sys/kernel/compression to check what's the compression type supported by the kernel. This will later be used when loading modules to check if the decompression step has to happen in userspace or if it can be delegated to the kernel. Reviewed-by: Luis Chamberlain <mcgrof@kernel.org> Signed-off-by: Lucas De Marchi <lucas.de.marchi@gmail.com>
2023-06-09libkmod: Keep track of compression typeLucas De Marchi2-12/+22
Do not only set the type as direct, but also keep track of the compression being used. This will allow using the in-kernel compression in future. Reviewed-by: Luis Chamberlain <mcgrof@kernel.org> Signed-off-by: Lucas De Marchi <lucas.de.marchi@gmail.com>
2023-06-09libkmod: Extract finit_module vs init_module pathsLucas De Marchi1-47/+73
Extract 2 functions to handle finit_module vs init_modules differences, with a fallback from the former to the latter. Reviewed-by: Luis Chamberlain <mcgrof@kernel.org> Signed-off-by: Lucas De Marchi <lucas.de.marchi@gmail.com>
2023-06-09libkmod: Do not inititialize file->memory on openLucas De Marchi4-4/+27
Add a separate function to load the file contents when it's needed. When it's not needed on the path of loading modules via finit_module(), there is no need to mmap the file. This will help support loading modules with the in-kernel compression support. This is done differently than the lazy initialization for kmod_file_get_elf() because on the contents case there is also the file->size to be updated. It would be a weird API to return the pointer and have the size changed as a side-effect. Signed-off-by: Lucas De Marchi <lucas.de.marchi@gmail.com>
2023-05-30shared: avoid passing {NULL, 0} array to bsearch()Dmitry Antipov1-5/+8
Fix the following warning reported by UBSan (as of gcc-13.1.1): shared/hash.c:244:35: runtime error: null pointer passed as argument 2, which is declared to never be null Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu> Signed-off-by: Dmitry Antipov <dmantipov@yandex.ru> [ reshuffle the code to use return-early style ] Signed-off-by: Lucas De Marchi <lucas.de.marchi@gmail.com>
2023-05-30libkmod: fix possible out-of-bounds memory accessDmitry Antipov1-0/+4
An attempt to pass too long module name to, say, rmmod, may cause an out-of-bounds memory access (as repoted by UBSan): $ rmmod $(for i in $(seq 0 4200); do echo -ne x; done) libkmod/libkmod-module.c:1828:8: runtime error: index 4107 out of bounds for type 'char [4096]' This is because 'snprintf(path, sizeof(path), ...)' may return the value which exceeds 'sizeof(path)' (which happens when an output gets truncated). To play it safe, such a suspicious output is better to be rejected explicitly. Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu> Signed-off-by: Dmitry Antipov <dmantipov@yandex.ru> Link: https://lore.kernel.org/r/20230519074638.402045-1-dmantipov@yandex.ru
2023-05-30libkmod, depmod: prefer -ENODATA over -ENOENT if no section foundDmitry Antipov2-4/+4
When the module is definitely present but CONFIG_MODVERSIONS is disabled, the following error message may be somewhat confusing: modprobe --dump-modversions /path/to/module.ko.xz modprobe: FATAL: could not get modversions of /path/to/module.ko.xz: No such file or directory Choosing among the convenient errno values, I would suggest to use ENODATA when the module lacks a particular ELF section (and vermagic as well). So now it is expected to be: modprobe: FATAL: could not get modversions of /path/to/module.ko.xz: No data available Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu> Signed-off-by: Dmitry Antipov <dmantipov@yandex.ru> Link: https://lore.kernel.org/r/20230519093630.474185-1-dmantipov@yandex.ru
2023-04-18modprobe: rmmod_do_module: Free kmod list of holdersNicolas Schier1-0/+1
Add a missing kmod_module_unref_list() to fix a memory leak. Fixes: 42b32d30c38e ("modprobe: Fix holders removal") Signed-off-by: Nicolas Schier <n.schier@avm.de> Signed-off-by: Lucas De Marchi <lucas.de.marchi@gmail.com>
2023-03-06configure.ac: fix link with -llzmaFabrice Fontaine1-4/+4
Add liblzma_LIBS to LIBS to avoid the following build failure when building with a static-only liblzma.a: /home/autobuild/autobuild/instance-5/output-1/host/lib/gcc/xtensa-buildroot-linux-uclibc/11.3.0/../../../../xtensa-buildroot-linux-uclibc/bin/ld: libkmod/.libs/libkmod-internal.a(libkmod-file.o):(.text.xz_uncompress+0x10): undefined reference to `lzma_code' For consistency, also update libzstd, zlib and libcrypto Fixes: - http://autobuild.buildroot.org/results/83a4a7ecc77f39639d3e5bc8554bd01a62a3ede0 References: https://github.com/kmod-project/kmod/pull/25 Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com> Signed-off-by: Lucas De Marchi <lucas.de.marchi@gmail.com>
2023-02-21configure: manage libkmod.pc.in and version.py.in via AC_CONFIG_FILESEmil Velikov2-25/+2
Replace the manual sed command, build rules and dist/clean for using AC_CONFIG_FILES. It does the exact same thing, with an added bonus... Currently we're missing version.py.in in the EXTRA_DIST. Thus a simple "touch Makefile" should retrigger the regeneration of version.py. Which would presumably fail, since the input file isn't in the distribution tarball. Signed-off-by: Emil Velikov <emil.velikov@collabora.com> Signed-off-by: Lucas De Marchi <lucas.de.marchi@gmail.com>
2023-02-21shared: annotate local API as staticEmil Velikov2-6/+3
None of the API is used outside of the compilation unit. Signed-off-by: Emil Velikov <emil.velikov@collabora.com> Signed-off-by: Lucas De Marchi <lucas.de.marchi@gmail.com>
2023-02-21libkmod: annotate kmod_builtin_iter API as staticEmil Velikov2-9/+4
It's no longer used outside the compilation unit, as of last commit. Signed-off-by: Emil Velikov <emil.velikov@collabora.com> Signed-off-by: Lucas De Marchi <lucas.de.marchi@gmail.com>
2023-02-21libkmod: remove unused kmod_module_get_builtinEmil Velikov2-44/+0
The last and only user was removed with commit 0246e06 ("depmod: Stop opening modules.modinfo once per module") Signed-off-by: Emil Velikov <emil.velikov@collabora.com> Signed-off-by: Lucas De Marchi <lucas.de.marchi@gmail.com>
2023-02-10testsuite: Handle different sysconfdirLucas De Marchi6-32/+9
Instead of skipping tests if sysconfdir isn't /etc, just handle it during the rootfs setup logic. Signed-off-by: Lucas De Marchi <lucas.de.marchi@gmail.com> Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com>
2023-02-10testsuite: Move setup-rootfs logic from Makefile to scriptLucas De Marchi2-10/+19
It's easier to implement the logic outside of the Makefile, so rename the populate-modules.sh script to setup-rootfs.sh and move the additional logic from the makefile to the script. Signed-off-by: Lucas De Marchi <lucas.de.marchi@gmail.com> Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com>
2023-02-09libkmod: error out on unknown hash algorithmEmil Velikov1-1/+5
Currently if we see unknown algorithm, we'll do an OOB read in pkey_hash_algo. This can happen for example if OPENSSL_NO_SM3 is set and the kernel module uses a SM3 hash. Cc: Mikhail Novosyolov <m.novosyolov@rosalinux.ru> Cc: Lucas De Marchi <lucas.demarchi@intel.com> Signed-off-by: Emil Velikov <emil.velikov@collabora.com> Signed-off-by: Lucas De Marchi <lucas.de.marchi@gmail.com>
2023-02-09testsuite/depmod: use defines for the rootfs/lib_modulesEmil Velikov1-23/+27
The uname used across the tests is same, so drop "_ORDER" from the macro name and use it throughout. Similarly - add respective LIB_MODULES defines and use them in the tests. Signed-off-by: Emil Velikov <emil.velikov@collabora.com> Signed-off-by: Lucas De Marchi <lucas.de.marchi@gmail.com>
2023-02-09testsuite: add function declarations for __xstat familyEmil Velikov1-1/+8
As the inline comment says - the declarations have been dropped with glibc 2.32.9000, as a result the build throws a set of lovely warnings. Inspired by umockdev, which bears the same license as this project. https://github.com/martinpitt/umockdev/commit/f1b416400479d861deffb4c5a40422dcdf190e85 Signed-off-by: Emil Velikov <emil.velikov@collabora.com> Signed-off-by: Lucas De Marchi <lucas.de.marchi@gmail.com>
2023-02-09treewide: add some static const notationsEmil Velikov6-12/+12
Signed-off-by: Emil Velikov <emil.velikov@collabora.com> Signed-off-by: Lucas De Marchi <lucas.de.marchi@gmail.com>
2023-02-09depmod: Introduce outdir optionEmil Velikov8-3/+128
This option is equivalent to basedir, with the small difference being that's where the meta-data files are generated. In other words, this allows us to have read-only input modules and modules.dep, while still being able to generate the meta-data files. Signed-off-by: Emil Velikov <emil.velikov@collabora.com> [ Move files to a different dir so input files (produced by kernel build system is separate from the files generated by depmod (output) ] Signed-off-by: Lucas De Marchi <lucas.demarchi@gmail.com>
2023-02-08man/rmmod: explain why modprobe -r is more usefulYauheni Kaliuta1-1/+2
Improve user experience by explaining the option so the user may not search explanations in other manpages (modprobe). Signed-off-by: Yauheni Kaliuta <ykaliuta@redhat.com> Reviewed-by: Luis Chamberlain <mcgrof@kernel.org> Signed-off-by: Lucas De Marchi <lucas.de.marchi@gmail.com>
2023-01-13modprobe: Allow passing path to moduleGustavo Sousa24-10/+91
This is useful to kernel module developers for testing a just compiled module: instead of using insmod, they can load the module from the path while getting all the benefits of modprobe (e.g. module dependency resolution). v2: - Add test for relative path as well. (Lucas) - Add note warning about modules with dependencies not matching the installed depmod database. (Lucas) Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com> Cc: Lucas De Marchi <lucas.demarchi@intel.com> Signed-off-by: Lucas De Marchi <lucas.de.marchi@gmail.com>
2023-01-13modprobe: Move insertion block into separate functionGustavo Sousa1-35/+42
That same logic will be used for enabling modprobe for paths in the next patch. As such, prepare for that by extracting that block into its own function. Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com> Signed-off-by: Lucas De Marchi <lucas.de.marchi@gmail.com>
2023-01-13testsuite: Wrap chdir()Gustavo Sousa1-0/+1
One of the tests in an upcoming patch will need to change into a specific directory to test loading a module from a relative path. Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com> Signed-off-by: Lucas De Marchi <lucas.de.marchi@gmail.com>
2022-12-26kmod: configure.ac: In _Noreturn check, include <stdlib.h> for exitFlorian Weimer1-1/+2
Otherwise, an implicit functiona declaration is used, causing a C99 compatibility issue. Signed-off-by: Florian Weimer <fweimer@redhat.com> Signed-off-by: Lucas De Marchi <lucas.de.marchi@gmail.com>
2022-11-30autogen.sh: remove --with-rootprefix, it is gone since kmod-11Adam Gołębiowski1-1/+0
Signed-off-by: Adam Gołębiowski <adamg@pld-linux.org>
2022-10-03libkmod: do not crash on unknown signature algorithmMikhail Novosyolov1-0/+3
Example kernel module: https://file-store.rosalinux.ru/download/7281f97e0c04c0f818ad3f936706f4a407e8dc7e (/lib/modules/5.15.67-generic-1rosa2021.1-x86_64/kernel/drivers/usb/host/xhci-pci.ko.zst) It is signed with Streebog 512. libkmod v30 crashed in libkmod-module.c:2413 in this code: n = kmod_module_info_append(list, "sig_hashalgo", strlen("sig_hashalgo"), sig_info.hash_algo, strlen(sig_info.hash_algo)); because strlen() got null.
2022-09-05testsuite: fix override of `stat` on 32-bit architecturesJulien Cristau1-4/+5
When _FILE_OFFSET_BITS is 64, glibc headers turn `stat` calls into `stat64`, and our `stat` override into a `stat64` function. However, because we use dlsym to get the address of libc's `stat`, we end up calling into the "real" `stat` function, which deals with 32-bit off_t, and we treat its result as if it were returned from stat64. On most architectures this seems to have been harmless, but on 32-bit mips, st_mode's offset in struct stat and struct stat64 are different, so we read garbage. To fix this, explicitly unset _FILE_OFFSET_BITS in path.c, to turn off the redirect magic in glibc headers, and override both the 32-bit and 64-bit functions so each call ends up wrapping the right libc function. Fixes #16 (https://github.com/kmod-project/kmod/issues/16)
2022-06-30modprobe: Write error messages to syslog if stderr is unavailableQuentin Armitage1-0/+7
The man page modprobe(8) states for the --syslog option: "This is also automatically enabled when stderr is unavailable." but it wasn't happening. This commit now makes modprobe write to syslog if stderr is closed.
2022-06-30build: enable building & running tests from a subdirDimitri John Ledkov1-0/+1
During dpkg build, in a subdir, it is currently not possible to run tests. Building testsuite/modules due to non-existance of the testsuite directory under the build dir. Thus create it, when it is not there. Signed-off-by: Dimitri John Ledkov <dimitri.ledkov@canonical.com>
2022-06-30testsuite: repair read of uninitialized memoryJan Engelhardt1-1/+1
Function ``test_backoff_time`` does not initialize ``delta``, and ``get_backoff_delta_msec`` then performs a read from uninitialized memory with the ``!*delta`` expression. Signed-off-by: Jan Engelhardt <jengelh@inai.de> Signed-off-by: Lucas De Marchi <lucas.de.marchi@gmail.com>
2022-06-30kmod 30v30Lucas De Marchi3-5/+85
2022-06-30libkmod: Support SM3 hash algorithmHuaxinLu1-0/+6
SM3 has been supported in kernel and cryptographic libraries like openssl. This patch adds support for the SM3 algorithm of kmod. Signed-off-by: HuaxinLu <luhuaxin1@huawei.com>
2022-06-29README: Update optional dependenciesLucas De Marchi1-0/+2
Signed-off-by: Lucas De Marchi <lucas.de.marchi@gmail.com>
2022-06-28Keep only one readmeLucas De Marchi1-126/+0
Signed-off-by: Lucas De Marchi <lucas.de.marchi@gmail.com>
2022-06-26modprobe: Add --waitLucas De Marchi2-9/+78
Retry module removal if it fails due to EAGAIN. This allows user to pass --wait <timeout>, during which `modprobe -r` will keep trying to remove the module. Signed-off-by: Lucas De Marchi <lucas.de.marchi@gmail.com>
2022-06-26testsuite: Add tests for sleep calculationLucas De Marchi1-0/+41
Signed-off-by: Lucas De Marchi <lucas.de.marchi@gmail.com>
2022-06-26util: Add exponential backoff sleepLucas De Marchi2-0/+51
Add simple functions to put the current thread to sleep using exponential backoff to split the interval in smaller pieces. Signed-off-by: Lucas De Marchi <lucas.de.marchi@gmail.com>
2022-06-26util: Add msec variants for time-related functionsLucas De Marchi2-0/+20
Signed-off-by: Lucas De Marchi <lucas.de.marchi@gmail.com>
2022-06-26util: Add time-related functions from testsuiteLucas De Marchi3-13/+19
This will be useful in future not only to testsuite, but also to tools and library. Signed-off-by: Lucas De Marchi <lucas.de.marchi@gmail.com>
2022-06-26module-playground: Add debugfs entry in mod-simpleLucas De Marchi1-1/+17
Add a debugfs file in mod-simple for manual tests: insert the module and open the file to have its refcount increased. Signed-off-by: Lucas De Marchi <lucas.de.marchi@gmail.com>
2022-06-26libkmod: Allow to ignore log message on module removalLucas De Marchi2-4/+11
Caller may want to handle retries, in which case the log message is not appropriate. Signed-off-by: Lucas De Marchi <lucas.de.marchi@gmail.com>
2022-06-26modprobe: Move -R to "Query options"Lucas De Marchi1-4/+4
Signed-off-by: Lucas De Marchi <lucas.de.marchi@gmail.com>
2022-06-26modprobe: re-use modname variableLucas De Marchi1-1/+1
Signed-off-by: Lucas De Marchi <lucas.de.marchi@gmail.com>
2022-06-26depmod: Fix writing over array lengthLucas De Marchi1-0/+1
Make sure return value in flush_stream_to() is the length written if the value didn't the size. Fix warning on gcc 12.1: tools/depmod.c: In function ‘output_builtin_alias_bin’: tools/depmod.c:2465:24: warning: array subscript 4096 is above array bounds of ‘char[4096]’ [-Warray-bounds] 2465 | modname[len] = '\0'; | ~~~~~~~^~~~~ tools/depmod.c:2460:22: note: while referencing ‘modname’ 2460 | char modname[PATH_MAX]; | ^~~~~~~ tools/depmod.c:2477:22: warning: array subscript 4096 is above array bounds of ‘char[4096]’ [-Warray-bounds] 2477 | value[len] = '\0'; | ~~~~~^~~~~ tools/depmod.c:2461:22: note: while referencing ‘value’ 2461 | char value[PATH_MAX]; | ^~~~~ Signed-off-by: Lucas De Marchi <lucas.de.marchi@gmail.com>