Lucas De Marchi [Sat, 30 Nov 2024 06:30:53 +0000 (00:30 -0600)]
util: Add dlfcn helpers
Heavily based on systemd: add similar (but simplified) functions to
dlopen() a library and load specific symbols from it. This will be
useful to allow to load the compression libraries as needed. A few
differences from the systemd implementation:
1) It's allowed to link directly to the library and hence bypass the
dlopen() + dlsym()
2) The only entrypoint is dlsym_many() which is already declared with
the sentinel: it's expected callers will use an x-macro that doesn't
allow forgetting the sentinel
3) No support yet for ELF info annotation yet
Lucas De Marchi [Sun, 1 Dec 2024 00:49:00 +0000 (18:49 -0600)]
Add TAKE_PTR()
Similar to macro in systemd codebase: add a macro that documents we are
"leaking" a pointer that would otherwise be cleaned up by the cleanup
attribute.
Emil Velikov [Thu, 21 Nov 2024 17:53:47 +0000 (17:53 +0000)]
testsuite/test-weakdep: remove custom handling
Currently test-weakdep is the only test which explicitly sets the kernel
module lookup directory and the modprobe.d location. It does so by
explicitly hard-coding the full path for both, thus effectively
bypassing the path handling done in our `LD_PRELOAD` module `path.so`.
Just use `kmod_new(NULL, NULL);` which will ensure that everything is
handled relatively to `TC_ROOTFS` defined further down in the test.
Note: this technically reduces our test coverage, although kmod_new() is
not the goal of this test and should be handled separately.
Noticed while removing the TESTSUITE_ROOTFS instances from DEFINE_TEST()
Martin Wilck [Thu, 21 Nov 2024 23:02:26 +0000 (00:02 +0100)]
libkmod: hash_new(): always use a step size of at least 4
The current algorithm would choose a step size of 4 for
n_buckets == 31, but 1 for n_buckets == 32, which seems wrong.
Fix it.
Signed-off-by: Martin Wilck <mwilck@suse.com> Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com> Link: https://github.com/kmod-project/kmod/pull/257 Signed-off-by: Lucas De Marchi <lucas.de.marchi@gmail.com>
If buf->bytes, buf->used, and len are all 0, buf_grow() will do nothing,
and memcpy() willbe called with a NULL first argument. This will cause
an error because the function is annotated with __nonnull(1, 2).
Fixes: e62d8c7 ("strbuf: make strbuf_pushchars() a little less dumb") Signed-off-by: Martin Wilck <martin_wilck@gmx.de> Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com> Link: https://github.com/kmod-project/kmod/pull/257 Signed-off-by: Lucas De Marchi <lucas.de.marchi@gmail.com>
Martin Wilck [Thu, 21 Nov 2024 22:56:10 +0000 (23:56 +0100)]
testsuite: test_strbuf_pushmem: test pushing 0 bytes to an empty strbuf
This test fails, and will be fixed by the next commit.
Signed-off-by: Martin Wilck <mwilck@suse.com> Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com> Link: https://github.com/kmod-project/kmod/pull/257 Signed-off-by: Lucas De Marchi <lucas.de.marchi@gmail.com>
Martin Wilck [Thu, 21 Nov 2024 22:45:02 +0000 (23:45 +0100)]
testsuite: test-hash: add a test for deleting a non-existing element
This test fails and will be fixed by the next commit.
Signed-off-by: Martin Wilck <mwilck@suse.com> Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com> Link: https://github.com/kmod-project/kmod/pull/257 Signed-off-by: Lucas De Marchi <lucas.de.marchi@gmail.com>
Assume bucket->used is 1, and element 0 is deleted. We shouldn't access any
memory above (entry + 1) in this case. Likewise, if bucked->used is 2, only
one element should be shifted, etc.
Fixes: 7db0865 ("Add simple hash implementation") Signed-off-by: Martin Wilck <martin_wilck@gmx.de> Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com> Link: https://github.com/kmod-project/kmod/pull/257 Signed-off-by: Lucas De Marchi <lucas.de.marchi@gmail.com>
Martin Wilck [Thu, 21 Nov 2024 21:52:34 +0000 (22:52 +0100)]
testsuite: test-hash: add a test for deleting a single element
...using n_buckets = 32, which will cause a step size of 1.
This test fails, and will be fixed by the next commit.
Signed-off-by: Martin Wilck <mwilck@suse.com> Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com> Link: https://github.com/kmod-project/kmod/pull/257 Signed-off-by: Lucas De Marchi <lucas.de.marchi@gmail.com>
Martin Wilck [Wed, 13 Nov 2024 23:53:14 +0000 (00:53 +0100)]
man: remove duplicate option in depmod.8.scd
Fixes: c36ddb6 ("depmod: Add option to override MODULE_DIRECTORY") Signed-off-by: Martin Wilck <martin_wilck@gmx.de> Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com> Link: https://github.com/kmod-project/kmod/pull/257 Signed-off-by: Lucas De Marchi <lucas.de.marchi@gmail.com>
Lucas De Marchi [Tue, 19 Nov 2024 14:48:48 +0000 (08:48 -0600)]
testsuite: Remove duplicated directory
module-param-kcmdline7 was incorrectly copied inside
module-param-kcmdline{7,8}. Drop the extra dir that is not used
anywhere.
Fixes: d3a1fe67b64c ("libkmod-config: re-quote option from kernel cmdline") Signed-off-by: Lucas De Marchi <lucas.de.marchi@gmail.com> Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com> Link: https://github.com/kmod-project/kmod/pull/254
Emil Velikov [Sat, 16 Nov 2024 15:20:42 +0000 (15:20 +0000)]
libkmod: use uint8_t for the child prefix/index
Stop implicitly casting the child prefix/index to int. It can have high
bits set thus get promoted to wildly incorrect value and cause chaos
further on.
In addition, convert the existing `unsigned char` instances to uint8_t,
which better illustrates what we're after - a fixed sized 8 bit unsigned
integer.
Emil Velikov [Sat, 16 Nov 2024 15:20:42 +0000 (15:20 +0000)]
depmod: use uint8_t for the child prefix/index
Stop implicitly casting the child prefix/index to int. It can have high
bits set thus get promoted to wildly incorrect value and cause chaos
further on.
In addition, convert the existing `unsigned char` instances to uint8_t,
which better illustrates what we're after - a fixed sized 8 bit unsigned
integer.
Use %zu for size_t, not %zd which would be for ssize_t.
Signed-off-by: Tobias Stoeckmann <tobias@stoeckmann.org> Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com> Link: https://github.com/kmod-project/kmod/pull/248 Signed-off-by: Lucas De Marchi <lucas.de.marchi@gmail.com>
Follow up of aad7c697, which fixes the same issue in another function.
Signed-off-by: Tobias Stoeckmann <tobias@stoeckmann.org> Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com> Link: https://github.com/kmod-project/kmod/pull/248 Signed-off-by: Lucas De Marchi <lucas.de.marchi@gmail.com>
If newly created module in kmod_module_new could not be added to hash,
return an error. Otherwise it is possible to create multiple independent
structs with the same name, which the hash set is supposed to prevent.
An error only occurs in out of memory conditions.
Signed-off-by: Tobias Stoeckmann <tobias@stoeckmann.org> Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com> Link: https://github.com/kmod-project/kmod/pull/248 Signed-off-by: Lucas De Marchi <lucas.de.marchi@gmail.com>
Emil Velikov [Fri, 15 Nov 2024 15:54:43 +0000 (15:54 +0000)]
testsuite: remove need_spawn = false support
Our test suite is a little unique in my experience in that the test can
be either a normal (fork) child or a (re)spawned one. All the other test
frameworks I have used opt for only one of the two.
I'm not entirely sure why we have both since the latter is sufficient for
all use-cases that we have. Perhaps the former was kept as
micro-optimisation?
Currently I am exploring a way to provide the results summary and the
need_spawn = false ones, are printed multiple times. At a glance I
couldn't quite find a way to fix it.
In addition I am also looking at removing/reducing the use of exit()
across the test suite. Where the two code-flows makes that process more
convoluted.
So let's remove one of the code-paths, simplify things and fix the
logging output. If needed we can re-introduce it later on.
NOTE: there's a lot going on here, because clang-format insist on
reformatting bunch of the DEFINE_TEST() instances :-\
Lucas De Marchi [Thu, 14 Nov 2024 16:33:14 +0000 (10:33 -0600)]
depmod: Fix handling relative moduledir
Make sure moduledir is always relative to the basedir and document it as
such.
Note: scdoc 1.11.3 produces a strange result when trying to render the
man page for the 2 examples. Workaround that by ending with an explicit
newline, which produces another stranger behavior (but visually correct)
of indenting the next line.
Lucas De Marchi [Thu, 14 Nov 2024 15:48:30 +0000 (09:48 -0600)]
util: Promote path_is_absolute() to header
This is a trivial function that can be used elsewhere. There's no point
in keeping the assert if we are going to crash in the very next
instruction. Rather add the relevant attribute and drop the assert.
Enrico Joerns [Wed, 28 Feb 2024 23:33:30 +0000 (00:33 +0100)]
ci/codeql: use filter-sarif to filter meson-private
There is a severe number of false-positive in code scanning caused by
inspecting meson-internal test files like
'build/meson-private/tmpzb46osmq/testfile.c'.
As a workaround, use the 'filter-sarif' action to filter out these
results before uploading the SARIF (Static Analysis Results Interchange
Format).
This PR was inspired by https://github.com/rauc/rauc/pull/1346 and the
example from https://github.com/advanced-security/filter-sarif.
Signed-off-by: Enrico Joerns <ejo@pengutronix.de>
[Emil: port from rauc, use checksums for actions] Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com> Link: https://github.com/kmod-project/kmod/pull/249 Signed-off-by: Lucas De Marchi <lucas.de.marchi@gmail.com>
Synchronize character checks with libkmod-index.c. 8-bit ASCII chars
would turn negative (due to signed char), which index__checkstring does
not properly check for.
Signed-off-by: Tobias Stoeckmann <tobias@stoeckmann.org> Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com> Link: https://github.com/kmod-project/kmod/pull/247 Signed-off-by: Lucas De Marchi <lucas.de.marchi@gmail.com>
Based on the autotools build, meson does not support relative
directories for distconfig and moduledir. We fixed that recently, but
never added a check so we don't regress.
In version 1 of kmod, definitions of INDEX_MAGIC_OLD and INDEX_MAGIC
were in two adjacent lines, which made the sentence starting with
"Second one" much easier to read.
Since the "second one" is actually INDEX_MAGIC and even kmod version 1
did use it, let's not talk about "newer versioned binary files" anymore
but clearly state that 0xB007FA57 is deprecated.
Also add a missing full stop.
Signed-off-by: Tobias Stoeckmann <tobias@stoeckmann.org> Signed-off-by: Max Kunzelmann <maxdev@posteo.de> Link: https://github.com/kmod-project/kmod/pull/241 Signed-off-by: Lucas De Marchi <lucas.de.marchi@gmail.com>
Max Kunzelmann [Tue, 12 Nov 2024 21:49:41 +0000 (22:49 +0100)]
libkmod: Do not set errno in libkmod-index
Don't set errno in read functions ad it's a libc interface which we
should not be overriding. None of the functions up the call stack (some
examples) check on it.
Signed-off-by: Max Kunzelmann <maxdev@posteo.de> Signed-off-by: Tobias Stoeckmann <tobias@stoeckmann.org> Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com> Link: https://github.com/kmod-project/kmod/pull/240
[ Reword commit message according to suggestion by Emil and remove
inline ] Signed-off-by: Lucas De Marchi <lucas.de.marchi@gmail.com>
Lucas De Marchi [Tue, 12 Nov 2024 20:07:32 +0000 (14:07 -0600)]
depmod: Convert depmod_modules_search_path() to strbuf
Replace the scratchbuf usage with corresponding API from strbuf.
depmod_modules_search_path() itself may further be simplified in the
future to share opening the dir with depmod_modules_search_dir(),
but that is left for later.
Lucas De Marchi [Tue, 12 Nov 2024 19:43:20 +0000 (13:43 -0600)]
strbuf: Do not append '\0' if not needed
Unconditionally appending '\0' is not a big problem, but that does
trigger the buffer to potentially be re-allocated. Avoid that by
checking the last char is not already NUL.
Lucas De Marchi [Tue, 12 Nov 2024 18:07:39 +0000 (12:07 -0600)]
strbuf: Add strbuf_reserve_extra()
To accomplish the same task as scratchbuf_alloc() does: make sure the
buffer has enough space for next operations. One difference is that
ensures **extra** space, not the total space. If needed in future,
a strbuf_reserve(), that resembles C++'s std::vector::reserve(), can be
added on top.
Lucas De Marchi [Tue, 12 Nov 2024 16:09:38 +0000 (10:09 -0600)]
strbuf: Allow to start with stack space
This is the main functionality of the scratchbuf implementation: it
starts with a buffer on stack that covers most of the calls, but also
has a fallback to allocate the buffer if it grows beyond the initial
size.
Port that functionality from scratchbuf to strbuf, so the former can be
eventually removed.
Lucas De Marchi [Tue, 12 Nov 2024 15:34:58 +0000 (09:34 -0600)]
strbuf: Invalidate (only) when stolen
The main for strbuf_steal() to free() on error was to allow the caller
to pass the NULL up the stack with just a return call to
strbuf_steal().
However this is error-prone and surprising that the buffer is still
invalidated on error. Provide an strbuf cleanup attribute that can be
used for the same purpose and make sure that when the string is stolen,
it's set to NULL, so there's no dangling pointer around.
Since we run the testsuite with AddressSanitizer, a simple test can be
added to make sure the stolen string becomes valid when the attribute is
used.
Do not override pointers to first list nodes if appending failed,
otherwise it's impossible to release already existing nodes of these
lists afterwards.
Remove the now unused function kmod_list_remove_n_latest as well.
Emil Velikov [Wed, 23 Oct 2024 23:27:08 +0000 (00:27 +0100)]
libkmod: store common section off/size and use them
Currently, we repeatedly loop over the elf headers looking for five well
known sections. Just do it once in kmod_elf_new() and reuse the data as
needed.
Note that not all sections are guaranteed to be available, so check and
ELFDBG print the ones which are missing.
v2: quit looping when found, ELFDBG print missing sections
v3: match the first section name, use a loop
Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com> Reviewed-by: Tobias Stoeckmann <tobias@stoeckmann.org> Link: https://github.com/kmod-project/kmod/pull/210 Signed-off-by: Lucas De Marchi <lucas.de.marchi@gmail.com>
Emil Velikov [Wed, 23 Oct 2024 23:37:31 +0000 (00:37 +0100)]
libkmod: rename kmod_elf_get_strings()
Rename kmod_elf_get_strings() to kmod_elf_get_modinfo_strings() and fold
the section name within, instead of passing it as an argument.
This aligns better with the other kmod_elf function names and will allow
us to tweak the kmod_elf_get_section() handling with later commit.
Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com> Reviewed-by: Tobias Stoeckmann <tobias@stoeckmann.org> Link: https://github.com/kmod-project/kmod/pull/210 Signed-off-by: Lucas De Marchi <lucas.de.marchi@gmail.com>
Emil Velikov [Wed, 23 Oct 2024 16:19:53 +0000 (17:19 +0100)]
libkmod: stop copying symbol names in kmod_elf_get_dependency_symbols()
Since the caller already copies the strings as needed, we can just
point to the elf data directly.
Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com> Reviewed-by: Tobias Stoeckmann <tobias@stoeckmann.org> Link: https://github.com/kmod-project/kmod/pull/210 Signed-off-by: Lucas De Marchi <lucas.de.marchi@gmail.com>
Emil Velikov [Wed, 23 Oct 2024 16:19:53 +0000 (17:19 +0100)]
libkmod: stop copying symbol names in kmod_elf_get_symbols()
Since the caller already copies the strings as needed, we can just
point to the elf data directly.
Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com> Reviewed-by: Tobias Stoeckmann <tobias@stoeckmann.org> Link: https://github.com/kmod-project/kmod/pull/210 Signed-off-by: Lucas De Marchi <lucas.de.marchi@gmail.com>
Emil Velikov [Wed, 23 Oct 2024 16:19:53 +0000 (17:19 +0100)]
libkmod: stop copying symbol names in kmod_elf_get_symbols_symtab()
Since the caller already copies the strings as needed, we can just
point to the elf data directly.
Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com> Reviewed-by: Tobias Stoeckmann <tobias@stoeckmann.org> Link: https://github.com/kmod-project/kmod/pull/210 Signed-off-by: Lucas De Marchi <lucas.de.marchi@gmail.com>
Emil Velikov [Thu, 24 Oct 2024 22:18:28 +0000 (23:18 +0100)]
libkmod: check for trailing \0 in __ksymtab_strings
As per the documentation (man 5 elf) the section must be null
terminated. Move the check further up and remove the no longer needed
code trying to workaround non-compliant instances.
Note: drop the erroneous +1 in the overflow (malloc size) calculation
Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com> Reviewed-by: Tobias Stoeckmann <tobias@stoeckmann.org> Link: https://github.com/kmod-project/kmod/pull/210 Signed-off-by: Lucas De Marchi <lucas.de.marchi@gmail.com>
Emil Velikov [Wed, 23 Oct 2024 16:19:53 +0000 (17:19 +0100)]
libkmod: stop copying symbol names in kmod_elf_get_modversions()
Since the caller already copies the strings as needed, we can just
point to the elf data directly.
Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com> Reviewed-by: Tobias Stoeckmann <tobias@stoeckmann.org> Link: https://github.com/kmod-project/kmod/pull/210 Signed-off-by: Lucas De Marchi <lucas.de.marchi@gmail.com>
Emil Velikov [Wed, 23 Oct 2024 22:11:27 +0000 (23:11 +0100)]
libkmod: const annotate kmod_modversion::symbol
Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com> Reviewed-by: Tobias Stoeckmann <tobias@stoeckmann.org> Link: https://github.com/kmod-project/kmod/pull/210 Signed-off-by: Lucas De Marchi <lucas.de.marchi@gmail.com>
Index files in pre-order have a significant performance improvement
for libkmod users.
On Arch Linux system, dumping configuration takes 296 read calls
in pre-order, compared to 4080 in post-order. Tests on a Raspberry
Pi 2 test system have shown an improvement by 9 %.
Even writing is faster now. This happens because we must know in
advance how many bytes index nodes will consume in the resulting file.
Although this code calculates it on the fly and caches the results,
saving lseek system calls has a significant positive effect which
compensates this extra overhead.
On Arch Linux system, writing index takes 6143 lseek calls now, compared
to previous 83701, leading to a performance gain of 13 %.
Emil Velikov [Mon, 11 Nov 2024 13:08:20 +0000 (13:08 +0000)]
meson: undefine NDEBUG in the tests
When using -D b_ndebug=true or inheriting CFLAGS="-DNDEBUG" from the
environment, the asserts will be no-op thus the checks in the
LD_PRELOADED libraries will be omitted.
Explicitly undefine the macro, so we don't accidentally shoot ourselves
in the foot.
dependabot[bot] [Fri, 8 Nov 2024 17:55:23 +0000 (17:55 +0000)]
ci: bump the all-actions group across 1 directory with 3 updates
Bumps the all-actions group with 3 updates in the / directory: [actions/checkout](https://github.com/actions/checkout), [yshui/git-clang-format-lint](https://github.com/yshui/git-clang-format-lint) and [github/codeql-action](https://github.com/github/codeql-action).
Updates `actions/checkout` from 4.1.7 to 4.2.2
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/692973e3d937129bcbf40652eb9f2f61becf3332...11bd71901bbe5b1630ceea73d27597364c9af683)
If an overly long signature is found in a module file, it is possible to
trigger an out of boundary write in kmod_module_hex_to_str due to
integer and subsequent heap buffer overflow.
This approach replaces malloc + sprintf with a simple hex-lookup and a
strbuf approach, being slightly faster in real life scenarios while
adding around 100 bytes to library size. A much faster approach could be
done without strbuf and using our overflow check functions, but
readability should win here.
Specially crafted files could overflow internal counters, allowing out of
boundary writes. Make sure that neither counters nor resulting calculations
overflow.
Signed-off-by: Tobias Stoeckmann <tobias@stoeckmann.org> Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com> Link: https://github.com/kmod-project/kmod/pull/234 Signed-off-by: Lucas De Marchi <lucas.de.marchi@gmail.com>
Lucas De Marchi [Mon, 11 Nov 2024 15:04:44 +0000 (09:04 -0600)]
tree-wide: Sprinkle _clang_suppress_alloc_
Add the clang::suppress attribute to places where allocation is done and
that rely on the cleanup attribute. Clang analyzer doesn't handle those
(yet), so keep it from giving us false positive.
Lucas De Marchi [Sat, 9 Nov 2024 22:53:22 +0000 (16:53 -0600)]
shared: Ignore clang-analyzer on cleanup attribute
When using the cleanup attribute we know we are not leaking that
allocation. Most of the time the assignment is together with the
declaration, so we can simplify additional clang annotations by making
the cleanup attribute imply clang::suppress.
In cases declaration and assignment are not together, provide
_clang_suppress_alloc_ to annotate the code. That is only defined for
clang analyzer.
Lucas De Marchi [Sat, 9 Nov 2024 22:23:02 +0000 (16:23 -0600)]
build: Stop warning for attribute clang::suppress
That attribute allows us to instruct the Clang Static Analyzer to stop
giving some false positives. However when building the code (with gcc
and clang) they warn that the attribute is ignored. Just ignore as we
know what the attribute is for.
Emil Velikov [Thu, 7 Nov 2024 15:44:30 +0000 (15:44 +0000)]
man: add modprobe.conf.5 manpage link
Seemingly Fedora and friends have been carrying this one for years. Just
add it to kmod itself so that people using multiple distros have
consistent experience.
Emil Velikov [Thu, 7 Nov 2024 15:28:28 +0000 (15:28 +0000)]
meson: install the configuration directories
Install the /{etc,usr/lib}/{depmod,modprobe}.d/ configuration
directories as part of out install action.
Currently a handful of distros (Debian, Gentoo, Fedora, Arch) do that
manually, where we can have it in the upstream project instead.
As a pie in the sky idea, in the future we may choose to enforce
particular permissions, ownership, etc and this should make it a little
less fragile across the ecosystem.
Emil Velikov [Thu, 7 Nov 2024 14:17:28 +0000 (14:17 +0000)]
meson.build: install kmod symlinks to /usr/sbin/
With earlier commit we added support for kmod itself to install the
symlinks to kmod. While it works across the board, some distributions
still support (to varying degree) split /usr/bin and /usr/sbin.
This commit changes the location where those are created and bears no
functional change for merged bin-sbin users. While for split ones, it
follows what distributions are doing to a varying extend:
- Fedora, Alpine - this commit matches exactly what they do
- Debian, Yocto - they have an extra /bin/lsmod -> ../sbin/kmod symlink
- Gentoo - as Debian plus an extra /bin/modinfo -> ../sbin/kmod symlink
Emil Velikov [Tue, 5 Nov 2024 15:07:34 +0000 (15:07 +0000)]
ci: add code coverage via Codecov
Add a simple code coverage pipeline based on the CodeQL one.
Should give us pretty reports in the PRs and web UI with the results. We
can consider having HTML reports on our website (once it's up that is)
in addition or instead of at a future point.
Closes: https://github.com/kmod-project/kmod/issues/61 Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com> Link: https://github.com/kmod-project/kmod/pull/229 Signed-off-by: Lucas De Marchi <lucas.de.marchi@gmail.com>
The commit reasoning was correct, but did not consider the case where
other third-party files are created. Namely: when generating the code
coverage files.
Thus the gcna files were created in $test_rootdir/$abs_top_builddir
which meant they won't get picked when the coverage info/xml/html files
were created and the statistics reported were quite wrong.
Revert the commit and add an inline comment, so we don't feel tempted to
change it in the future.
Emil Velikov [Tue, 5 Nov 2024 16:22:16 +0000 (16:22 +0000)]
ci/codeql: use Ubuntu 24.04, adjust build flags
While in here drop the docs and manpages flags - both of those combined
take ~1s of CI time - and disable the sanitizers and tests instead.
This means we no longer get pre-existing code problems in the tests,
which is fine considering the number of pre-existing issues in there.
Another nice side effect is that the pipeline time is reduced by ~50%.
Lucas De Marchi [Thu, 7 Nov 2024 17:13:11 +0000 (11:13 -0600)]
build: Drop define not picked by meson
For almost 13 years, since commit 769becb5dbfb ("tools: kmod: Add
handling of compat modinfo") we have a non-spoken joke in the build
system showing "-DANOTHER_BRICK_IN_THE -Wall" in honour of the famous
Pink Floyd song.
With configure flags now being sorted, I'm looking at the logs and
seeing: "-DANOTHER_BRICK_IN_THE -fdata-sections". That makes no sense.
Also the new meson build system did not join the joke. Not fun. Let's
drop it and let this commit serve as recognition of what it was.
Do not access memory out of bounds if the first character read by fgets
is NUL. Treat such a character as EOL instead. This is a purely
defensive measure since /proc/modules should normaly not contain such
characters.