Lucas De Marchi [Wed, 11 Jan 2012 20:29:55 +0000 (18:29 -0200)]
modprobe: break dependency loop by checking if module is loaded
modprobe doesn't have support for handling dependency loop. That happens
with poorly written softdeps that can introduce a loop. We must deal
with them like it's being done in libkmod.
However, we can break a dependency loop when the dependency was already
inserted. This commit fixes this issue, that happens in the following
scenario:
dependencies:
-------------
modA:
modB: modA
modC: modA
config:
softdep modA post: modB modC
This creates the following loop:
modA
inserted ok
handle post-soft-deps of modA -> modB modC
modB
handle dependencies of modB -> modA
modA is already inserted
handle post-soft-deps of modA -> modB modC
And so on and so forth.
Now we break the loop by checking if module is already inserted, before
handling it. Thus this gives us:
modA
inserted ok
handle post-soft-deps of modA -> modB modC
modB
handle dependencies of modB -> modA
modA is already inserted
inserted ok
modC
handle dependencies of modC -> modA
modA is already inserted
inserted ok
Lucas De Marchi [Wed, 11 Jan 2012 19:54:05 +0000 (17:54 -0200)]
autogen.sh: configure with 3-clicks + paste
Lucas De Marchi [Wed, 11 Jan 2012 17:38:50 +0000 (15:38 -0200)]
modprobe: adhere do coding style
Dave Reisner [Wed, 11 Jan 2012 00:28:30 +0000 (19:28 -0500)]
rmmod: behavior more like m-i-t's rmmod
In line with m-i-t's behavior, we should check to see if each module is:
- loaded
- has any holders
- has a 0 refcnt
Detecting any of these lets us provide a more useful message than the
kernel's EPERM response to delete_module(2).
Additionally, alter the main loop behavior to avoid exiting early on the
first error.
Dave Reisner [Tue, 10 Jan 2012 18:36:27 +0000 (13:36 -0500)]
modprobe: check for EPERM on insertion
Throw an appropriate error when an unprivileged user attempts to load a
module.
Lucas De Marchi [Wed, 11 Jan 2012 02:28:12 +0000 (00:28 -0200)]
config: deprecate 'include' and 'config' commands
Lucas De Marchi [Wed, 11 Jan 2012 02:08:14 +0000 (00:08 -0200)]
Fix error code returned on module removal
Lucas De Marchi [Tue, 10 Jan 2012 18:22:59 +0000 (16:22 -0200)]
build-sys: fix build with zlib/xz after private lib
Lucas De Marchi [Tue, 10 Jan 2012 17:45:14 +0000 (15:45 -0200)]
TODO: add task to modprobe
Lucas De Marchi [Tue, 10 Jan 2012 16:06:24 +0000 (14:06 -0200)]
build-sys: workaround libtool issue with argv[0]
Symlinking tools to kmod doesn't work because argv[0] is not the name of
the symlink, but rather 'kmod' (since libtool's wrapper script calls the
tools/.libs/kmod directly)
Now we create another binary kmod-nolib that is statically linked to
libkmod so we can call the binary directly and do not worry about
LD_LIBRARY_PATH.
Lucas De Marchi [Tue, 10 Jan 2012 13:34:12 +0000 (11:34 -0200)]
build-sys: build tests as part of check phase
Do not unconditionally compile tests, make them as target of 'make
check'. Only those listed in TESTS var are run.
Lucas De Marchi [Tue, 10 Jan 2012 13:15:19 +0000 (11:15 -0200)]
build-sys: create symlinks instead of building separate tools
Lucas De Marchi [Tue, 10 Jan 2012 14:55:13 +0000 (12:55 -0200)]
build-sys: allow building without having gtk-doc installed
Lucas De Marchi [Tue, 10 Jan 2012 17:00:07 +0000 (15:00 -0200)]
config: be reliable againt syntax errors in configs
Lucas De Marchi [Tue, 10 Jan 2012 12:19:01 +0000 (10:19 -0200)]
TODO: add tasks to modprobe
Lucas De Marchi [Mon, 9 Jan 2012 15:32:31 +0000 (13:32 -0200)]
doc: fix out of tree build
Lucas De Marchi [Mon, 9 Jan 2012 15:26:06 +0000 (13:26 -0200)]
build-sys: give recommended configure options for hacking
Lucas De Marchi [Mon, 9 Jan 2012 15:15:46 +0000 (13:15 -0200)]
README: add more information
Lucas De Marchi [Mon, 9 Jan 2012 15:00:28 +0000 (13:00 -0200)]
build-sys: do not run configure in autogen.sh
Lucas De Marchi [Mon, 9 Jan 2012 06:47:40 +0000 (04:47 -0200)]
doc: organize sections
Lucas De Marchi [Mon, 9 Jan 2012 06:20:55 +0000 (04:20 -0200)]
doc: add gtk-doc to generate documentation
Current limitation is horrible no support to sections: we have to to
have separate header files or to maintain the libkmod-sections.txt file.
We are doing the latter.
Lucas De Marchi [Mon, 9 Jan 2012 05:45:19 +0000 (03:45 -0200)]
doc: fix broken links to other functions
Lucas De Marchi [Mon, 9 Jan 2012 05:09:49 +0000 (03:09 -0200)]
doc: fix order of param descriptions
Lucas De Marchi [Mon, 9 Jan 2012 05:08:26 +0000 (03:08 -0200)]
Match param names on header and source code
This is needed by gtk-doc (to be added later) to be able to properly
document the function.
Lucas De Marchi [Mon, 9 Jan 2012 04:35:41 +0000 (02:35 -0200)]
doc: fix comments format
Lucas De Marchi [Mon, 9 Jan 2012 02:40:50 +0000 (00:40 -0200)]
Update copyright
Lucas De Marchi [Sun, 8 Jan 2012 20:08:05 +0000 (18:08 -0200)]
modprobe: fix error path when loading dependencies
demarchi> scenario is the following:
demarchi> modA depends on modB and modC
demarchi> if there's a race when trying to insert a dependency of a module, say
modB, it will stop loading all the modules
demarchi> it should check by "module already loaded error"
demarchi> like it does for modA
Gustavo Sverzut Barbieri [Sun, 8 Jan 2012 15:58:28 +0000 (13:58 -0200)]
modprobe: show is independent from verbose level.
"modprobe --quiet --show-depends" now works.
Lucas De Marchi [Sun, 8 Jan 2012 03:02:29 +0000 (01:02 -0200)]
Replace NAME_MAX with PATH_MAX for module aliases
Module aliases can be bigger than NAME_MAX. So, replace with PATH_MAX
that is bigger enough to hold them.
Technically in some places NAME_MAX would be sufficient (those using
module names only), but they use functions that can be called with
alias. So increase the buffers in these cases to PATH_MAX too.
Lucas De Marchi [Fri, 6 Jan 2012 21:22:41 +0000 (19:22 -0200)]
config: check if opening /proc/cmdline succeeded
Rolf Eike Beer [Fri, 6 Jan 2012 12:33:11 +0000 (13:33 +0100)]
tools/kmod-depmod: fix aliasing warning
Lucas De Marchi [Fri, 6 Jan 2012 12:44:45 +0000 (10:44 -0200)]
Revert "tools/kmod-depmod: fix aliasing warning"
This reverts commit
f63fc9e606449a36d26cc9a99431229e4efacdad. Wrong
author name. I'll apply it again later.
root [Fri, 6 Jan 2012 12:33:11 +0000 (13:33 +0100)]
tools/kmod-depmod: fix aliasing warning
Dave Reisner [Fri, 6 Jan 2012 03:56:54 +0000 (22:56 -0500)]
tools/modprobe: exit non-zero on module not found with --all
Dave Reisner [Fri, 6 Jan 2012 03:56:53 +0000 (22:56 -0500)]
tools/modinfo: exit non-zero on module not found
Lucas De Marchi [Thu, 5 Jan 2012 00:27:58 +0000 (22:27 -0200)]
kmod 3
Lucas De Marchi [Thu, 5 Jan 2012 10:15:51 +0000 (08:15 -0200)]
tools: use basename in help message
Dave Reisner [Thu, 5 Jan 2012 00:05:04 +0000 (19:05 -0500)]
libkmod/hash: check for NULL before freeing hash
Lucas De Marchi [Wed, 4 Jan 2012 23:07:59 +0000 (21:07 -0200)]
Add missing doc for function argument
Lucas De Marchi [Wed, 4 Jan 2012 22:53:10 +0000 (20:53 -0200)]
kmod-depmod: demote messages to WRN when non-critical files are missing
Dave Reisner [Wed, 4 Jan 2012 15:59:49 +0000 (10:59 -0500)]
libkmod: Fix casing in error output
Dave Reisner [Wed, 4 Jan 2012 15:41:50 +0000 (10:41 -0500)]
tools: unify error verbiage and casing
Fix a typo and ensure that we always use "could not" instead of "Could
not" or the conjunction "couldn't".
Lucas De Marchi [Wed, 4 Jan 2012 10:58:19 +0000 (08:58 -0200)]
build-sys: do not install kmod-* tools
Lucas De Marchi [Wed, 4 Jan 2012 10:23:15 +0000 (08:23 -0200)]
file: use log facilities
Don't clutter stderr with messages that might be useful in the log.
Lucas De Marchi [Wed, 4 Jan 2012 10:19:34 +0000 (08:19 -0200)]
file: take a weakref to ctx
Lucas De Marchi [Wed, 4 Jan 2012 10:14:54 +0000 (08:14 -0200)]
config: take a weakref to ctx
Commit "b6a4dfb config: save list of config paths with their timestamps"
removed the weakref to ctx. Add it back.
Lucas De Marchi [Wed, 4 Jan 2012 10:00:45 +0000 (08:00 -0200)]
Add missing static const
Gustavo Sverzut Barbieri [Tue, 3 Jan 2012 18:14:57 +0000 (16:14 -0200)]
kmod-depmod: fix replacement of existing modules.
We cannot create a kmod_module for existing module name, it will fail
due existing in the hash table "modules_by_name".
To avoid it, we first delete the existing module, if lower priority,
then add the new one.
kmod_module_new_from_path() is called only when the former module was
deleted or does not exist.
Gustavo Sverzut Barbieri [Tue, 3 Jan 2012 18:03:06 +0000 (16:03 -0200)]
kmod-depmod: fix comparison of module priority.
This code was never tested, my bad!
* the prefix should be ignored, as it is not stored in cfg_search/override.
* baselen should not include '/'.
* search length should not include '\0'.
* override path should not include cfg->dirname prefix.
Gustavo Sverzut Barbieri [Tue, 3 Jan 2012 17:58:24 +0000 (15:58 -0200)]
utils/array: add array_remove_at()
remove array element at given position, will be used by depmod.
Gustavo Sverzut Barbieri [Tue, 3 Jan 2012 17:11:58 +0000 (15:11 -0200)]
kmod-depmod: fix incorrect math finding out end of dirname.
Gustavo Sverzut Barbieri [Tue, 3 Jan 2012 17:06:08 +0000 (15:06 -0200)]
kmod-depmod: document --config/-C in help output.
Gustavo Sverzut Barbieri [Tue, 3 Jan 2012 17:04:34 +0000 (15:04 -0200)]
kmod-depmod: add missing trailing \n to log messages.
Gustavo Sverzut Barbieri [Tue, 3 Jan 2012 16:53:15 +0000 (14:53 -0200)]
elf: zero *array when count is zero.
Gustavo Sverzut Barbieri [Tue, 3 Jan 2012 16:25:49 +0000 (14:25 -0200)]
libkmod-file: refactor code to avoid ifdef mess.
Refactor code to use pointer to functions, avoiding the previous
Now comp_types defines a magic header to be checked (size and bytes),
with the associated load() and unload() operations. If a header
matches, their operations are used. Otherwise the regular file
operations (mmap/munmap) are used.
File descriptor close is managed by the common code if it's valid
(>=0). If some code steals the file descriptor (eg: gzopen), then they
must change file->fd to -1.
This way the code should be easier to extend and avoid bugs.
Gustavo Sverzut Barbieri [Tue, 3 Jan 2012 16:22:05 +0000 (14:22 -0200)]
utils/read_str_safe(): fix wrong behavior and bugs.
ouch, I did a mess in the original function, fix them:
* on errors (read() < 0), continue reading after the done bytes, not
at position 0.
* read buflen - 1 bytes, so there is always room to store the
trailing \0, as expected by user due behavior of snprintf(),
fgets() and others.
Lucas De Marchi [Sat, 31 Dec 2011 21:41:05 +0000 (19:41 -0200)]
TODO: add task for providing man page
Lucas De Marchi [Sat, 31 Dec 2011 21:29:13 +0000 (19:29 -0200)]
Add test to check kmod_validate_resources
Lucas De Marchi [Sat, 31 Dec 2011 21:28:31 +0000 (19:28 -0200)]
Add call to check if resources are valid
Lucas De Marchi [Sat, 31 Dec 2011 20:53:24 +0000 (18:53 -0200)]
index: save timestamp of each loaded index
Lucas De Marchi [Sat, 31 Dec 2011 20:48:05 +0000 (18:48 -0200)]
config: save list of config paths with their timestamps
Save a list of config paths with their timestamps so they can be checked
later.
Lucas De Marchi [Sat, 31 Dec 2011 14:28:54 +0000 (12:28 -0200)]
util: add helper function to compare timestamps
Lucas De Marchi [Sun, 1 Jan 2012 08:07:46 +0000 (06:07 -0200)]
kmod-modprobe: mimic modprobe when removing deps with usecount=0
Lucas De Marchi [Sun, 1 Jan 2012 07:55:25 +0000 (05:55 -0200)]
Fix leak of kmod_module and fix code style
Lucas De Marchi [Sun, 1 Jan 2012 07:47:17 +0000 (05:47 -0200)]
TODO: add list of things that are different on kmod
Dave Reisner [Sat, 31 Dec 2011 23:02:45 +0000 (18:02 -0500)]
kmodprobe: post-remove module deps with 0 refcnt
Dave Reisner [Sat, 31 Dec 2011 23:02:30 +0000 (18:02 -0500)]
modprobe: use lighter access call instead of stat
Dave Reisner [Sat, 31 Dec 2011 21:51:40 +0000 (16:51 -0500)]
modprobe: remove --list option
This was marked as deprecated in m-i-t's modprobe in favor of find and
basename.
Dave Reisner [Sat, 31 Dec 2011 16:19:55 +0000 (11:19 -0500)]
libkmod-config: remove warning for skipped config files
conf_files_filter_out() already skips these files, but writes to the log
to warn that they'll be ignored in the future.
Lucas De Marchi [Sat, 31 Dec 2011 15:01:55 +0000 (13:01 -0200)]
Use last enum value instead of ARRAY_SIZE
Lucas De Marchi [Sat, 31 Dec 2011 13:21:52 +0000 (11:21 -0200)]
Do not call exported function for mod->name
Name is always available and we don't neet to call a exported function
to get it.
Lucas De Marchi [Sat, 31 Dec 2011 13:15:52 +0000 (11:15 -0200)]
Move function to the right place
Lucas De Marchi [Fri, 30 Dec 2011 16:15:40 +0000 (14:15 -0200)]
Ignore "already loaded" error in module_probe_insert_module()
It also fixes a leak in the error path.
Lucas De Marchi [Fri, 30 Dec 2011 16:13:33 +0000 (14:13 -0200)]
Use errno instead of return value of init_module()
Return -errno instead of the value returned by init_module(). We need to
differentiate between the several errors that might occur, e.g. "module
already loaded", access denied, etc.
Leandro Pereira [Wed, 28 Dec 2011 16:44:35 +0000 (14:44 -0200)]
libkmod-util: getline_wrapped: return NULL when buffer allocation fails
Leandro Pereira [Wed, 28 Dec 2011 17:01:16 +0000 (15:01 -0200)]
Do not forget parenthesis around if (streq(A, B)).
Lucas De Marchi [Wed, 28 Dec 2011 15:33:26 +0000 (13:33 -0200)]
Move libkmod-util.c to convenience util lib
Share more code between tools and libkmod. underscores() in kmod-depmod
can not use the same function as in the lib, so rename it.
Lucas De Marchi [Wed, 28 Dec 2011 14:53:37 +0000 (12:53 -0200)]
Move array implementation from depmode to libkmod-util
Lucas De Marchi [Tue, 27 Dec 2011 21:56:33 +0000 (19:56 -0200)]
tools: kmod: bundle depmod together with the others
Lucas De Marchi [Tue, 27 Dec 2011 21:53:38 +0000 (19:53 -0200)]
Fix header guard
Leandro Pereira [Tue, 27 Dec 2011 20:22:30 +0000 (18:22 -0200)]
kmod tool: don't keep iterating when command has been executed
Lucas De Marchi [Tue, 27 Dec 2011 16:38:26 +0000 (14:38 -0200)]
Move util functions to libkmod-util.c
These allow them to be later shared with tools.
Lucas De Marchi [Tue, 27 Dec 2011 15:27:42 +0000 (13:27 -0200)]
kmod-depmod: use hash implementation from util lib
Lucas De Marchi [Tue, 27 Dec 2011 15:27:01 +0000 (13:27 -0200)]
hash: add iterator
Lucas De Marchi [Tue, 27 Dec 2011 14:26:51 +0000 (12:26 -0200)]
build-sys: create libkmod-util.la convenience lib
Util functions can be shared betweeing libkmod and tools. Start with the
hash implementation.
Lucas De Marchi [Tue, 27 Dec 2011 14:20:35 +0000 (12:20 -0200)]
Copy missing hash functions from kmod-depmod to libkmod
Lucas De Marchi [Tue, 27 Dec 2011 14:13:54 +0000 (12:13 -0200)]
Remove kmod_ prefix from hash implementation
In a future commit, hash implementation will be shared between libkmod
and depmod. kmod_hash is not exported, so remove the namespace.
Lucas De Marchi [Tue, 27 Dec 2011 20:10:19 +0000 (18:10 -0200)]
Log paths if kmod_module_new_from_path() failed
Lucas De Marchi [Tue, 27 Dec 2011 19:32:55 +0000 (17:32 -0200)]
TODO: format and add task
Lucas De Marchi [Tue, 27 Dec 2011 16:18:32 +0000 (14:18 -0200)]
kmod-depmod: Fix leak of dependency vector
Gustavo Sverzut Barbieri [Mon, 26 Dec 2011 15:19:07 +0000 (13:19 -0200)]
kmod-depmod: refactor extension matching array, support XZ.
move the extensions array match to global, conditionally add GZ and XZ
if the support is enabled.
Gustavo Sverzut Barbieri [Sat, 24 Dec 2011 13:16:40 +0000 (11:16 -0200)]
kmod-depmod: implement -A (--quick)
Gustavo Sverzut Barbieri [Sat, 24 Dec 2011 12:31:55 +0000 (10:31 -0200)]
kmod-depmod: implement -F and -E options.
Read System.map and Module.symvers from kernel built, then be able to
report unknown symbols.
Gustavo Sverzut Barbieri [Sat, 24 Dec 2011 03:45:23 +0000 (01:45 -0200)]
update TODO
depmod was done, and without map support
Gustavo Sverzut Barbieri [Sat, 24 Dec 2011 01:21:48 +0000 (23:21 -0200)]
kmod-depmod: dump modules.dep.bin
Gustavo Sverzut Barbieri [Sat, 24 Dec 2011 01:21:09 +0000 (23:21 -0200)]
kmod-depmod: dump modules.alias.bin
Gustavo Sverzut Barbieri [Sat, 24 Dec 2011 01:20:44 +0000 (23:20 -0200)]
kmod-depmod: dump modules.symbols.bin
Gustavo Sverzut Barbieri [Sat, 24 Dec 2011 01:19:22 +0000 (23:19 -0200)]
kmod-depmod: dump modules.builtin.bin
Gustavo Sverzut Barbieri [Sat, 24 Dec 2011 01:16:20 +0000 (23:16 -0200)]
kmod-depmod: add utility functions to be used by binary dumps.
Binary dumps will use functions to convert alias to underscores and
paths to module names.
Gustavo Sverzut Barbieri [Sat, 24 Dec 2011 01:11:41 +0000 (23:11 -0200)]
kmod-depmod: copy code from module-init-tools/index.c
Copy code from module-init-tools/index.c, the following copyright applies:
Copyright (C) 2008 Alan Jenkins <alan-jenkins@tuffmail.co.uk>.