Yauheni Kaliuta [Tue, 11 Apr 2017 12:15:01 +0000 (15:15 +0300)]
libkmod: modinfo: use own function for sig_key hex output
Refactor the code a bit to make it easier to extend for signature
output.
kmod_module_get_info() creats a hex string for the sig_key data
inplace. Separate it into own kmod_module_hex_to_string function
and handle the branch in the new kmod_module_info_append_hex,
keeping the same signature as the non-hex version.
Signed-off-by: Yauheni Kaliuta <yauheni.kaliuta@redhat.com>
Yauheni Kaliuta [Tue, 11 Apr 2017 12:15:00 +0000 (15:15 +0300)]
libkmod: modinfo: fix sig_id output
For some reason the key for sig_id was set to "signature". The
length was calculated against the proper string, as the result in
the output it was truncated to "signat".
Pass the proper key to the kmod_module_info_append() call.
Signed-off-by: Yauheni Kaliuta <yauheni.kaliuta@redhat.com>
Lucas De Marchi [Fri, 24 Feb 2017 07:32:51 +0000 (23:32 -0800)]
kmod 24
Lucas De Marchi [Fri, 24 Feb 2017 05:58:15 +0000 (21:58 -0800)]
build: update autogen
Bring new options from systemd and other projects.
Lucas De Marchi [Fri, 24 Feb 2017 05:47:37 +0000 (21:47 -0800)]
depmod: fix leak on error path
Lucas De Marchi [Fri, 24 Feb 2017 02:28:27 +0000 (18:28 -0800)]
man: make error message clearer for missing xstlproc
We can't do at configure phase since we actually ship the built man pages with
dist, so it's fine not having xsltproc if building from dist. If building from
the repository, it's better to have have a better message saying xsltproc was
not found than trying to execute the argument to xsltproc. Now message is:
XSLT depmod.d.5
/bin/sh: line 1: xsltproc: command not found
Instead of:
XSLT depmod.d.5
/bin/sh: --nonet: command not found
Lucas De Marchi [Fri, 24 Feb 2017 02:26:54 +0000 (18:26 -0800)]
build: add missing header
Fix failing distcheck
Yauheni Kaliuta [Wed, 22 Feb 2017 09:41:59 +0000 (11:41 +0200)]
depmod: handle nested loops
This is a rework of depmod report cycles logic to make it
tolerant to more complex loops.
The patch tries to remember own path for vertexes which makes it
possible to handle configurations with common edges and
non-cyclic modules.
It assumes that the previous dependency calculations can not give
as input something like
mod_a -> mod_b -> <loop>, but
<loop> -> mod_a -> mod_b should be fine.
Signed-off-by: Yauheni Kaliuta <yauheni.kaliuta@redhat.com>
Yauheni Kaliuta [Wed, 22 Feb 2017 09:41:58 +0000 (11:41 +0200)]
testsuite: depmod: check netsted loops reporting
The patch adds nested loops configuration for the loop test:
mod-loop-h -> mod-loop-i -> mod-loop-j -> mod-loop-k
^ | |
--------------------------- |
| |
-------------------------------------------
making 2 loops with common edges:
mod-loop-h -> mod-loop-i -> mod-loop-j -> mod-loop-h
mod-loop-h -> mod-loop-i -> mod-loop-j -> mod-loop-k -> mod-loop-h
The actual output for the loops is:
depmod: ERROR: Cycle detected: mod_loop_h -> mod_loop_h
depmod: ERROR: Cycle detected: mod_loop_i -> mod_loop_j -> mod_loop_k -> mod_loop_h -> mod_loop_i
(the order in the second doesn't matter, but the first one is
incorrect)
Signed-off-by: Yauheni Kaliuta <yauheni.kaliuta@redhat.com>
Lucas De Marchi [Thu, 16 Feb 2017 17:18:35 +0000 (09:18 -0800)]
libkmod-config: fix parsing quoted kernel cmdline on params
We can only accept quoted values, not module names or parameter names.
Lucas De Marchi [Thu, 16 Feb 2017 16:57:01 +0000 (08:57 -0800)]
libkmod-config: replace 0/1 with bool
Bartosz Golaszewski [Wed, 15 Feb 2017 11:18:03 +0000 (12:18 +0100)]
module: fix a memory leak
When a module is removed and re-inserted without unrefing, the
kmod_file is unconditionally re-opened. This results in a memory
and file descriptor leak.
Fix it by checking if the file is already open in
kmod_module_insert_module().
Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
Lucas De Marchi [Mon, 23 Jan 2017 19:59:31 +0000 (11:59 -0800)]
testsuite: add test for kernel cmdline with quotes
Add some tests in which we quotes in kernel cmdline and also spaces
inside quotes. This doesn't yet cover the case in which quotes are used
for module name, wihch should be forbidden.
Lucas De Marchi [Mon, 23 Jan 2017 19:58:29 +0000 (11:58 -0800)]
testsuite: fix typo in description
James Minor [Fri, 20 Jan 2017 23:15:50 +0000 (17:15 -0600)]
libkmod: Fix handling of quotes in kernel command line
If a module parameter on the command line contains quotes, any
spaces inside those quotes should be included as part of the
parameter.
Signed-off-by: James Minor <james.minor@ni.com>
Lucas De Marchi [Fri, 11 Nov 2016 01:37:04 +0000 (23:37 -0200)]
build: fix build with disabled test modules
install: cannot stat 'testsuite/module-playground/mod-loop-f.ko': No
such file or directory
Makefile:2881: recipe for target 'rootfs' failed
make[1]: *** [rootfs] Error 1
make[1]: *** Waiting for unfinished jobs....
Makefile:2101: recipe for target 'check-recursive' failed
We need to ship pre-compiled binaries so it's possible to run
"make check" on servers without kernel headers.
Also add them to EXTRA_DIST as other sources.
Yauheni Kaliuta [Wed, 9 Nov 2016 06:52:26 +0000 (08:52 +0200)]
shared: make scratchbuf_str static
It fixes linking problem
tools/depmod.o: In function `output_symbols_bin':
depmod.c:(.text.output_symbols_bin+0x135): undefined reference to `scratchbuf_str'
for -O0 build, where gcc doesn't actually inline it.
Signed-off-by: Yauheni Kaliuta <yauheni.kaliuta@redhat.com>
Mian Yousaf Kaukab [Tue, 8 Nov 2016 16:45:50 +0000 (17:45 +0100)]
depmod: ignore related modules in depmod_report_cycles
Only print actual cyclic dependencies. Print count of all the modules
in cyclic dependency at the end of the function so that dependent
modules which are not in cyclic chain can be ignored.
Printing dependent modules which are not in cyclic chain causes buffer
overflow as m->modnamesz is not included in buffer size calculations
(loop == m is never true). This buffer overflow causes kmod to crash.
Update depmod test to reflect the change as well.
Reported-by: Andreas Färber <afaerber@suse.de>
Signed-off-by: Mian Yousaf Kaukab <yousaf.kaukab@suse.com>
Mian Yousaf Kaukab [Tue, 8 Nov 2016 16:45:49 +0000 (17:45 +0100)]
testsuite: depmod: add module dependency outside cyclic chain
Check that depmod do not report modules outside cyclic chain
Two modules f and g are added which do not have any dependency.
modules a and b are made dependent on f and g.
Here is the output of loop dependency check test after adding this
patch:
TESTSUITE: ERR: wrong:
depmod: ERROR: Found 7 modules in dependency cycles!
depmod: ERROR: Cycle detected: mod_loop_d -> mod_loop_e -> mod_loop_d
depmod: ERROR: Cycle detected: mod_loop_b -> mod_loop_c -> mod_loop_a -> mod_loop_b
depmod: ERROR: Cycle detected: mod_loop_b -> mod_loop_c -> mod_loop_a -> mod_loop_g
depmod: ERROR: Cycle detected: mod_loop_b -> mod_loop_c -> mod_loop_a -> mod_loop_f
Buffer overflow occurs in the loop when last two lines are printed.
43 bytes buffer is allocated and 53 bytes are used.
Signed-off-by: Mian Yousaf Kaukab <yousaf.kaukab@suse.com>
Yauheni Kaliuta [Tue, 8 Nov 2016 20:57:26 +0000 (22:57 +0200)]
testsuite: fix test_array_sort pointers inderection
The array elements in the tests are strings, what means "char *"
in С. The comparation funtion takes pointers to the elements, so
the arguments become "char **". It means, that strcmp() cannot be
used directrly.
The patch creates a wrapper on strcmp() which perfoms
dereferencing of the "char **" to supply the actual strings to
strcmp(), and uses the wrapper as a comparation function for the
qsort() call.
Signed-off-by: Yauheni Kaliuta <yauheni.kaliuta@redhat.com>
Lucas De Marchi [Wed, 10 Aug 2016 18:33:18 +0000 (15:33 -0300)]
depmod: fix string overflow
Use scratchbuf to fix issue with strcpy that may overflow the buffer we
declared in the stack.
Lucas De Marchi [Wed, 10 Aug 2016 17:20:32 +0000 (14:20 -0300)]
Add scratchbuf implementation
This should fill the requirements for "we need to loop over a lot of
strings that usually are small enough to remain on stack, but we want to
protect ourselves against huge strings not fitting in the static
buffer we estimated as sufficient"
Lucas De Marchi [Wed, 10 Aug 2016 17:51:57 +0000 (14:51 -0300)]
testsuite: include stdio.h
It's used in the log macros so include it.
Lucas De Marchi [Wed, 10 Aug 2016 15:42:12 +0000 (12:42 -0300)]
util: fix warning of equal values on logical OR
shared/util.c: In function ‘read_str_safe’:
shared/util.c:211:24: warning: logical ‘or’ of equal expressions [-Wlogical-op]
if (errno == EAGAIN || errno == EWOULDBLOCK ||
^~
shared/util.c: In function ‘write_str_safe’:
shared/util.c:237:24: warning: logical ‘or’ of equal expressions [-Wlogical-op]
if (errno == EAGAIN || errno == EWOULDBLOCK ||
^~
This is because EAGAIN and EWOULDBLOCK have the same value. Prefer
EAGAIN, but add a static assert to catch if it's not the same in another
architecture.
Lucas De Marchi [Mon, 8 Aug 2016 14:42:52 +0000 (11:42 -0300)]
libkmod: fix use of strcpy
We were not checking if there was sufficient space in the buffer.
Lucas De Marchi [Wed, 20 Jul 2016 04:38:42 +0000 (01:38 -0300)]
kmod 23
Lucas De Marchi [Tue, 28 Jun 2016 18:28:47 +0000 (15:28 -0300)]
NEWS: add items for kmod 23
Lucas De Marchi [Tue, 28 Jun 2016 15:14:38 +0000 (12:14 -0300)]
libkmod: fix integration with gtk-doc
It was failing to generate doc with recent version of gtk-doc
[kmod]$ ./bootstrap
libkmod/docs/gtk-doc.make:33: error: EXTRA_DIST must be set with '=' before using '+='
libkmod/docs/Makefile.am:29: 'libkmod/docs/gtk-doc.make' included from here
autoreconf: automake failed with exit status: 1
Just add an empty EXTRA_DIST so it works.
Lucas De Marchi [Sun, 5 Jun 2016 03:09:22 +0000 (00:09 -0300)]
libkmod-module: modinfo: print signature id
This way it's possible to give at least the signature type for PKCS#7.
Lucas De Marchi [Sun, 5 Jun 2016 03:00:57 +0000 (00:00 -0300)]
libkmod-signature: handle PKCS#7
Lucas De Marchi [Sun, 5 Jun 2016 01:37:11 +0000 (22:37 -0300)]
libkmod-module: do not crash modinfo on 0 key id len
Michal Marek [Fri, 17 Jun 2016 14:04:15 +0000 (16:04 +0200)]
libkmod: Handle long lines in /proc/modules
kmod_module_new_from_loaded() calls fgets with a 4k buffer. When a
module such as usbcore is used by too many modules, the rest of the line
is considered a beginning of another lines and we eventually get errors
like these from lsmod:
libkmod: kmod_module_get_holders: could not open '/sys/module/100,/holders': No such file or directory
together with bogus entries in the output. In kmod_module_get_size, the
problem does not affect functionality, but the line numbers in error
messages will be wrong.
Signed-off-by: Michal Marek <mmarek@suse.com>
Anton Blanchard [Fri, 10 Jun 2016 05:24:30 +0000 (15:24 +1000)]
depmod: Ignore PowerPC64 ABIv2 .TOC. symbol
The .TOC. symbol on the PowerPC64 ABIv2 identifies the GOT
pointer, similar to how other architectures use _GLOBAL_OFFSET_TABLE_.
This is not a symbol that needs relocation, and should be ignored
by depmod.
Lucas De Marchi [Tue, 24 May 2016 14:45:25 +0000 (11:45 -0300)]
README: add link to patchwork
Héctor Orón Martínez [Mon, 2 May 2016 14:38:24 +0000 (16:38 +0200)]
kmod: compiling with old sed version (!ERE support)
Makefile.am uses `sed -E', which it is found on BSD sed; however a
replacement on GNU sed would be `sed -r'. Both intend to use extended
regular expressions (ERE). However I have a system that does not support
those, in benefit for portability could you consider replacing ERE by BRE.
Signed-off-by: Héctor Orón Martínez <hector.oron@gmail.com>
Peter Wu [Sat, 21 May 2016 11:15:19 +0000 (13:15 +0200)]
kmod_module_get_refcnt: fix documentation
Lucas De Marchi [Mon, 11 Jan 2016 12:48:33 +0000 (10:48 -0200)]
travis: workaround bug in environment setup
Travis is poluting the environment, particularly PYTHON_CFLAGS which
makes the build to fail. Just unset the variable since we don't want to
override these cflags.
Josh Triplett [Sun, 10 Jan 2016 15:10:25 +0000 (07:10 -0800)]
depmod: Don't insert comment in modules.devname if otherwise empty
This allows tools to detect the file as empty, such as via systemd's
ConditionFileNotEmpty.
Marc-Antoine Perennou [Fri, 20 Nov 2015 21:23:14 +0000 (22:23 +0100)]
insmod: fix wron fallthrough of -f
Signed-off-by: Marc-Antoine Perennou <Marc-Antoine@Perennou.com>
Lucas De Marchi [Wed, 18 Nov 2015 00:12:07 +0000 (22:12 -0200)]
kmod 22
Philippe De Swert [Wed, 7 Oct 2015 15:36:58 +0000 (18:36 +0300)]
insmod: do support -f
The -f switch is accepted by insmod, but silently ignored. This
causes the user to wonder why things don't work. As insmod is
most often used with "evil" modules, -f is almost default and
thus needs to work.
Signed-off-by: Philippe De Swert <philippe.deswert@jollamobile.com>
Lucas De Marchi [Wed, 30 Sep 2015 18:28:24 +0000 (15:28 -0300)]
libkmod: export new kmod_get_dirname() function
Make sure it gets exported and add documentation.
Laura Abbott [Mon, 28 Sep 2015 22:39:14 +0000 (15:39 -0700)]
depmod: Don't fall back to uname on bad version
Currently, if a value that doesn't match a kernel version
("%u.%u") is passed in, depmod silently falls back to
using uname. Rather than try and work around the caller passing
bad data, just exit out instead.
Laura Abbott [Mon, 28 Sep 2015 22:39:13 +0000 (15:39 -0700)]
depmod: Remove unprinted debug messages
In between the start of the program and the call to log_setup_kmod_log,
the only messages that will be printed are the ones at or above the
global default level. Debug messages in this range will never be printed
so remove them.
Laura Abbott [Mon, 28 Sep 2015 22:39:12 +0000 (15:39 -0700)]
Change default log level
The default log level is currently LOG_ERR. Tools can override this
default but there is a non-trivial amount of setup that needs to
happen before the log level can be changed. Since tools may want to
use the warn level for things such as deprecated flags, change the
default to LOG_WARNING to ensure messages get printed.
Laura Abbott [Mon, 28 Sep 2015 22:39:11 +0000 (15:39 -0700)]
modprobe: Update error message when path is missing
Currently, modprobe fails with no output by default if the
search paths it tries are missing:
$ modprobe -S notakernel dm-crypt
$
$ modprobe -S notakernel lkjjweiojo
$
This is fairly cryptic and not at all obvious there is a problem
unless the error code is checked or verbose flags are used.
Update the error message to indicate a problem and print out the
directory that failed.
Laura Abbott [Mon, 28 Sep 2015 22:39:10 +0000 (15:39 -0700)]
README: Indicate cython requirements
The recommended flags require cython be installed to compile
successfully. Note this in the documentation.
Natanael Copa [Mon, 22 Jun 2015 12:09:17 +0000 (14:09 +0200)]
build: let sed use posix ERE instead of GNU extension
Use POSIX Extended Regular Expression (ERE) instead of the GNU extension
\| in the install-exec-hook. This makes it create the symlink properly
with busybox sed built with musl libc. It will silently create a broken
symlink otherwise.
Lucas De Marchi: fix up added newline.
Lucas De Marchi [Sat, 13 Jun 2015 21:29:47 +0000 (18:29 -0300)]
libkmod-module: fix return code in error path
ENOSYS is the wrong errno to return when we don't find a module in
kmod_module_insert_module(). Why is it there in the first place? This
goes back to kmod v1 when we couldn't load modules by names, but we
should give a path instead.
708624a ("ELF: initial support for modinfo and strip of modversions and
vermagic.") changed that so we do a lazy-search by the module path in
this function. Later f304afe ("Change error message to reflect
reality") fixed the log message but the return coded remained the same.
Lucas De Marchi [Thu, 11 Jun 2015 16:59:54 +0000 (13:59 -0300)]
Add README.md file with build details
Add the badges from semaphoreci and coverity and point people to the
README file with more information.
Lucas De Marchi [Tue, 9 Jun 2015 05:36:14 +0000 (02:36 -0300)]
kmod 21
Lucas De Marchi [Tue, 9 Jun 2015 05:03:36 +0000 (02:03 -0300)]
build: add cache to distributed files
We were missing the cache directory on the distributed files.
Lucas De Marchi [Tue, 9 Jun 2015 05:01:11 +0000 (02:01 -0300)]
build: silence stderr on coverity rules
We try to execute git in order to get the dependencies for the coverity
rules. And it gets executed even when we are not calling that specific
rule. Later we may want to improve it, but for now let's just silence
the errors of not being a git repository when executing this on a
packaged version.
Santiago Vila [Tue, 9 Jun 2015 01:46:42 +0000 (22:46 -0300)]
kmod: fix small typo in rmmod(8)
This is how rmmod(8) looks like:
SEE ALSO
modprobe(8), insmod(8), lsmod(8)modinfo(8)
The attached trivial patch fixes it:
SEE ALSO
modprobe(8), insmod(8), lsmod(8), modinfo(8)
Lucas De Marchi [Sun, 7 Jun 2015 05:46:22 +0000 (02:46 -0300)]
tools: display features in --version
Reviewed-by: Andreas Mohr <andim2@users.sf.net>
Lucas De Marchi [Sun, 7 Jun 2015 05:44:02 +0000 (02:44 -0300)]
build: add relevant features to KMOD_FEATURES in config.h
Not all the features (i.e. those available in --enable-* or --with-*)
are really relevant to the final user. Create a KMOD_FEATURES definition
in config.h containing these features.
Reviewed-by: Andreas Mohr <andim2@users.sf.net>
Lucas De Marchi [Sun, 7 Jun 2015 04:15:30 +0000 (01:15 -0300)]
build: add function to build string of features
Add a CC_FEATURE_APPEND function that we can use to append the features
that are enabled/disabled. This will generate a single string in the
form "+FEATURE1 +FEATURE2 -FEATURE3".
Reviewed-by: Andreas Mohr <andim2@users.sf.net>
Lucas De Marchi [Tue, 9 Jun 2015 00:30:11 +0000 (21:30 -0300)]
tools: add PACKAGE definition in message
Reported-by: Andreas Mohr <andim2@users.sf.net>
Lucas De Marchi [Sun, 7 Jun 2015 02:26:31 +0000 (23:26 -0300)]
tools: Hide new commands behind experimental flag
Hide the commands behind a flag so we can continue doing releases while
the commands aren't ready.
Lucas De Marchi [Sun, 31 May 2015 18:38:47 +0000 (15:38 -0300)]
build: cache modules from playground
Now that we are able to build our own test modules, also allow to use
cached modules so a) kernel headers are not required and b) distro
maintainers are happy. It's still need a "--disable-test-modules" in
the configure since the default is enabled.
There's no license problems anymore since all modules come from our own
repository, we ship the sources and the modules can be easily rebuilt.
Santiago Vila [Thu, 16 Apr 2015 11:44:22 +0000 (08:44 -0300)]
Fix spurious spaces in lsmod output
While using "localyesconfig" to build a custom kernel I noticed that
lsmod output now has trailing spaces when the list of "Used by" modules
is empty.
The following patch just delays the space to the point where we are sure
that there are more things to print.
Lucas De Marchi [Tue, 24 Mar 2015 02:47:23 +0000 (23:47 -0300)]
util: use UINT64_MAX
Since we are checking the size of long and long long, use UINT64_MAX in
the fallback to be sure thre right size is being used.
Lucas De Marchi [Tue, 10 Mar 2015 18:17:03 +0000 (15:17 -0300)]
build: sync dolt with upstream
Caio Marcelo de Oliveira Filho [Sat, 7 Mar 2015 13:32:53 +0000 (10:32 -0300)]
tools: add basic versions of insert and remove
Caio Marcelo de Oliveira Filho [Thu, 5 Mar 2015 16:06:38 +0000 (13:06 -0300)]
testsuite: update README
Caio Marcelo de Oliveira Filho [Thu, 5 Mar 2015 16:06:37 +0000 (13:06 -0300)]
testsuite: remove .gitignore files when populating rootfs
Usually this file is added to keep a directory existing in the
repository but without any real content. In rootfs this can be
problematic if a directory will have all its files inspected. This
happens for kmod_module_get_holders().
Side-note: the 'test-loaded.c' is hit by this problem but doesn't
"notice" because the invalid module returned by get_holders() is not
checked. The modules in its loop are only used to get the name and
generate an output, and NULL was a valid value to generate the name.
Lucas De Marchi [Thu, 5 Mar 2015 16:03:35 +0000 (13:03 -0300)]
build: use dolt
Drop-in replacement to libtool: http://dolt.freedesktop.org/. More
details: http://marc.info/?l=freedesktop-xorg&m=
120791871615872&w=3
kmod is relatively fast to compile, so it doesn't matter much.
Nonetheless, less forks the better.
Compilation time using ./bootstrap-configure --disable-manpages and
make -j4
libtool
real 0m6.453s
user 0m21.067s
sys 0m0.773s
dolt
real 0m4.792s
user 0m15.920s
sys 0m0.637s
Lucas De Marchi [Sun, 1 Mar 2015 17:43:09 +0000 (14:43 -0300)]
kmod 20
Lucas De Marchi [Sun, 1 Mar 2015 17:16:59 +0000 (14:16 -0300)]
Update TODO
Lucas De Marchi [Sat, 28 Feb 2015 19:11:53 +0000 (16:11 -0300)]
Check return of fseek while reading index
Lucas De Marchi [Sat, 28 Feb 2015 19:07:55 +0000 (16:07 -0300)]
Avoid sign-extension error on multiplication
Do not promote "idx * elf->header.section.entry_size" to int. Explicitly
cast the result to uint64_t so it's zero-extended.
Lucas De Marchi [Sat, 28 Feb 2015 17:45:07 +0000 (14:45 -0300)]
depmod: add asserts to ensure positive return from ftell()
Also ignore some errors that will later be returned by ferror().
Lucas De Marchi [Fri, 27 Feb 2015 18:46:24 +0000 (15:46 -0300)]
testsuite: add test for modprobe -R <builtin-module>
Lucas De Marchi [Fri, 27 Feb 2015 18:39:36 +0000 (15:39 -0300)]
modprobe: stop checking initstate for builtin modules
builtin modules are handled in libkmod by looking at the modules.builtin
index. There's no need to check again for the module's initstate to
decide if it's builtin.
Lucas De Marchi [Fri, 27 Feb 2015 04:51:45 +0000 (01:51 -0300)]
testsuite: test builtin state
The second test, that creates the module by name and then retrieves the
initstate was broken before b95fa91 ('Fix race while loading modules').
We would check /sys and return either builtin (if the module has
parameters) or give an error because we don't find the module (even if
it's in the modules.builtin index)
Harish Jenny K N [Sun, 22 Feb 2015 18:41:07 +0000 (15:41 -0300)]
Fix race while loading modules
usecase: two sd cards are being mounted in parallel at same time on
dual core. example modules which are getting loaded is nls_cp437.
While one module is being loaded , it starts creating sysfs files.
meanwhile on other core, modprobe might return saying the module
is KMOD_MODULE_BUILTIN, which might result in not mounting sd card.
Experiments done to prove the issue in kmod.
Added sleep in kernel module.c at the place of creation of sysfs files.
Then tried `modprobe nls_cp437` from two different shells.
While the first was still waiting for its completion ,
the second one returned saying the module is built-in.
[ Lucas:
The problem is that the creation of /sys/module/<name> and
/sys/module/<name>/initstate are not atomic. There's a small window in
which the directory exists but the initstate file was still not
created.
Built-in modules can be handled by searching the modules.builtin file.
We actually lose some "modules" that create entries in /sys/modules
(e.g. vt) and are not in modules.builtin file: only those that can be
compiled as module are present in this file.
We enforce mod->builtin to always be up-to-date when
kmod_module_get_initstate() is called. This way if the directory
exists but the initstate doesn't, we can be sure this is because the
module is in the "coming" state, i.e. kernel didn't create the file
yet, but since builtin modules were already handled by checking our
index the only reason for that to happen is that we hit the race
condition.
I also added some tweaks to the patch, so we don't repeat the code for builtin
lookup. ]
Lucas De Marchi [Fri, 27 Feb 2015 19:19:44 +0000 (16:19 -0300)]
build: we are kmod, not systemd
Fix copy and paste mistake.
Lucas De Marchi [Thu, 26 Feb 2015 16:02:04 +0000 (13:02 -0300)]
shared: avoid checking for __STDC_VERSION__
Since we pass -std=gnu99 to the compiler __STDC_VERSION__ is defined to
199901. Even in this case we can use _Noreturn. Delegate the testing to
the configure phase with a compile test.
In future we want to stop using AC_PROG_CC_99 and start using the new
AC_PROG_CC from autoconf 2.70, which tries to choose the most recent
standard.
Lucas De Marchi [Thu, 26 Feb 2015 05:56:04 +0000 (02:56 -0300)]
build: simplify and organize configure
- There's no need for the various AC_PROG_CC* macros
- No need for AC_C_BIGENDIAN: the only place we care about endianness,
we use __BYTE_ORDER
- Organize calls to be in similar order as systemd
- Disable --disable-largefile. We already had possible bugs in the
index implementation if this were passed. It's now fixed, but it's
never tested. Disable it.
- Bump autoconf requirement to 2.64
Lucas De Marchi [Thu, 26 Feb 2015 06:38:52 +0000 (03:38 -0300)]
depmod: fix leak in case of malloc(0)
malloc(0) can return != NULL. We need to pass the pointer to free().
This happens if index__haschildren(node) returned true, but
child_count is set to 0.
Lucas De Marchi [Wed, 25 Feb 2015 15:45:02 +0000 (12:45 -0300)]
build: add helpers to upload coverity tarball
Lucas De Marchi [Wed, 25 Feb 2015 15:06:44 +0000 (12:06 -0300)]
depmod: use cleanup attribute to simplify free on exit
Reusing the root variable was a bad idea. Doing so we could call free()
on a variable that was not allocated. For example: "depmod -b / -h".
Since we would jump to cmdline_failed, root would not be duplicated.
Instead of fighting the order in the options, just used the cleanup
attribute and remove the calls to free() on "config_paths" and "root".
Colin Walters [Wed, 25 Feb 2015 13:22:38 +0000 (08:22 -0500)]
depmod: Fix crash in previous commit if root is not set
[This fixes http://build.gnome.org/continuous/buildmaster/builds/2015/02/25/31/build/output.txt ]
The variable we're reading here is "root", not "optarg" which is only
valid inside the getopt call.
Lucas De Marchi [Wed, 25 Feb 2015 02:58:39 +0000 (23:58 -0300)]
depmod: fix leaking root on exit
David Herrmann [Tue, 24 Feb 2015 16:49:48 +0000 (17:49 +0100)]
from systemd: build: make sure to test for -Wflag instead of -Wno-flag
gcc does not support testing for negated warnings. See here for details:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63499
This patch changes CC_CHECK_FLAG_APPEND to always test for the non-negated
warnings.
Zbigniew Jędrzejewski-Szmek [Sun, 3 Aug 2014 03:50:22 +0000 (23:50 -0400)]
from systemd: build-sys: fix conftest.c to work on arm
All tests for compiler support were failing with:
/usr/bin/ld: /tmp/ccwnVc2A.o: relocation R_ARM_MOVW_ABS_NC against `a' can not be used when making a shared object; recompile with -fPIC
David Herrmann [Fri, 13 Sep 2013 10:42:12 +0000 (12:42 +0200)]
from systemd: build: check for build/link flags harder
Use AC_LINK_IFELSE instead of AC_COMPILE_IFELSE to test for flags that
might succeed during compilation but not during linking. An example is gcc
compiled with libssp support but gnu-ld without it. In this case
-fstack-protector works fine during compilation but fails during linking
as several internal helpers are missing.
Lucas De Marchi [Wed, 25 Feb 2015 01:29:04 +0000 (22:29 -0300)]
from systemd: build: merge trivial changes back
These were trivial changes applied to systemd tree since the files were
synchronized:
- change some comments
- replace tab with space
- fix typo
Lucas De Marchi [Tue, 24 Feb 2015 04:50:32 +0000 (01:50 -0300)]
build: add missing files to EXTRA_DIST
Fix make distcheck.
Lucas De Marchi [Tue, 24 Feb 2015 04:48:48 +0000 (01:48 -0300)]
module-playground: don clean all .ko files
Rather than calling kernel's make for clean target, do it by ourselves.
This way we can preserve some prebuilt modules.
Marcus Meissner [Sun, 22 Feb 2015 10:48:13 +0000 (11:48 +0100)]
testsuite: move test-blacklist to DEFINE_TEST
otherwise the test will not be executed.
Signed-Off-By: Marcus Meissner <meissner@suse.de>
Lucas De Marchi [Sat, 21 Feb 2015 17:47:16 +0000 (15:47 -0200)]
testsuite: port signature-check modules to module-playground
We use a "fake signature" to sign the modules. As far as kmod is
concerned the signature fields are informational only. It's the kernel
the responsible for checking it's valid.
So what we are doing here is: pick the signatures of the ext4-x86_64.ko
module and save as dummy.{hashalgo}. This signature is appended to the
mod-simple.ko module so the ext4-x86_64.ko module can be removed from
tree.
Lucas De Marchi [Sat, 21 Feb 2015 17:09:12 +0000 (15:09 -0200)]
testsuite: port arch-specific tests to module-playground
Rename modinfo_jonsmodules() to test_modinfo_signature(): now this test
is responsible only for the signed modules.
The other tests use specific flags to modinfo in order to print only
one field, so we can filter out those fields that are expect to change
if the module is recompiled.
Lucas De Marchi [Sat, 21 Feb 2015 17:08:19 +0000 (15:08 -0200)]
fixup! module-playground: allow to cross-compile modules
Lucas De Marchi [Sat, 21 Feb 2015 17:02:55 +0000 (15:02 -0200)]
testsuite: leave arch-specific modules in tree
This is for convenience for development and testing since we don't want
to needlessly cross-compile the modules. There's a README file
explaining the building process for those who want to update them.
These files are compiled from their respective .c and thus have LPGL
license.
Lucas De Marchi [Sat, 21 Feb 2015 15:39:36 +0000 (13:39 -0200)]
testsuite: add option to copy output from test
This is helpful while debugging the tests: copy the output from test
(both stdout and stderr) to the stdout of the parent process.
Lucas De Marchi [Sat, 21 Feb 2015 15:07:42 +0000 (13:07 -0200)]
testsuite: fix exiting with success on no output activity
If we were expecting output on stdout or stderr but the test didn't
produce any, we were incorrectly assuming the test was successful.
Now test on exit if there was activity on the monitored fd. If there
was, check also if the file size to check for output is > 0 for the
cases in which we want to assert there was no activity on certain fd.
Lucas De Marchi [Sat, 21 Feb 2015 05:22:54 +0000 (03:22 -0200)]
module-playground: allow to cross-compile modules
This adds the needed infra to cross-compile modules so we can test them
in our testsuite. Right now we are only compiling mod-simple.ko for x86,
x86_64 and sparc64.
The makefiles are organized in a way it's easy to force a rebuild of a
module by calling the Makefile.arch directly and that allows the rule in
Makefile to not trigger in case we want to ship the modules
pre-compiled.
Lucas De Marchi [Thu, 19 Feb 2015 21:50:16 +0000 (19:50 -0200)]
testsuite: port modules-order-compressed to module-playground
Lucas De Marchi [Thu, 19 Feb 2015 03:00:05 +0000 (01:00 -0200)]
Update TODO