Gustavo Sverzut Barbieri [Tue, 20 Dec 2011 12:11:22 +0000 (10:11 -0200)]
elf: add bind type to kmod_modversion.
will be used to share this structure with get_dependency_symbols()
Gustavo Sverzut Barbieri [Mon, 19 Dec 2011 23:23:45 +0000 (21:23 -0200)]
add test/test-elf
will be focused on testing ELF operations and takes a filename to load
instead of looking for it in the system.
Gustavo Sverzut Barbieri [Mon, 19 Dec 2011 23:23:13 +0000 (21:23 -0200)]
elf: add get_symbols()
Similar to module-init-tools load_symbols(), it will try .symtab and
.strtab for symbols starting with __crc_, if they are found their crc
is read from ELF's Elf_Sym::st_value.
If not found, then it will fallback to __ksymtab_strings.
Gustavo Sverzut Barbieri [Fri, 23 Dec 2011 04:33:20 +0000 (02:33 -0200)]
elf: minimum size is enough.
Gustavo Sverzut Barbieri [Sat, 24 Dec 2011 02:09:31 +0000 (00:09 -0200)]
file: speed up loading non-gzipped modules when zlib is enabled.
Just now realized that my distro (Gentoo) enables support for gzip but
does not compress modules by default.
In this case it's better to have a special case that uses mmap()
instead of a loop of realloc() + gzread().
Lucas De Marchi [Fri, 23 Dec 2011 14:03:19 +0000 (12:03 -0200)]
build-sys: use AS_IF
Lucas De Marchi [Fri, 23 Dec 2011 13:44:28 +0000 (11:44 -0200)]
tools: kmod: show wrong command in err message
Lucas De Marchi [Fri, 23 Dec 2011 13:35:48 +0000 (11:35 -0200)]
tools: kmod: print help message when no commands given
Lucas De Marchi [Fri, 23 Dec 2011 13:33:02 +0000 (11:33 -0200)]
tools: kmod: add list command
It's the same of lsmod since there's not much to change on its format.
Lucas De Marchi [Thu, 22 Dec 2011 05:54:46 +0000 (03:54 -0200)]
tools: kmod: Add handling of compat modprobe
Lucas De Marchi [Thu, 22 Dec 2011 05:50:54 +0000 (03:50 -0200)]
tools: kmod: Add handling of compat modinfo
Lucas De Marchi [Thu, 22 Dec 2011 05:45:07 +0000 (03:45 -0200)]
tools: kmod: Add handling of compat insmod
Lucas De Marchi [Thu, 22 Dec 2011 05:39:11 +0000 (03:39 -0200)]
tools: kmod: Add handling of compat rmmod
Lucas De Marchi [Thu, 22 Dec 2011 05:01:45 +0000 (03:01 -0200)]
tools: kmod: Add handling of compat lsmod
Lucas De Marchi [Thu, 22 Dec 2011 21:21:11 +0000 (19:21 -0200)]
tools: kmod: check progname for handling compat commands
Cristian Rodríguez [Fri, 23 Dec 2011 05:06:56 +0000 (03:06 -0200)]
Fix leak on error path
Lucas De Marchi [Fri, 23 Dec 2011 04:56:27 +0000 (02:56 -0200)]
tools: kmod: Add global options
Lucas De Marchi [Thu, 22 Dec 2011 04:33:36 +0000 (02:33 -0200)]
tools: add skeleton of kmod tool
If using libtool 2.4.2, running the script generated by libtool will not
work because libtool changes argv[0] to lt-progname.
To test this is necessary to either fix the installed
build-aux/ltmain.sh file or run the binary directly like in:
$ export LD_LIBRARY_PATH=$PWD/libkmod/.libs/
$ ./tools/.libs/kmod help
Lucas De Marchi [Fri, 23 Dec 2011 03:59:31 +0000 (01:59 -0200)]
build-sys: use MKDIR_P
Lucas De Marchi [Fri, 23 Dec 2011 03:36:10 +0000 (01:36 -0200)]
kmod_modprobe: use basename(argv[0]) in help message
Gustavo Sverzut Barbieri [Thu, 22 Dec 2011 01:54:35 +0000 (23:54 -0200)]
kmod-modprobe: fix leak in command line option processing.
not that it should matter for the binary, but let's be strict with
leaks so running in valgrind never complains.
Kay Sievers [Thu, 22 Dec 2011 14:40:24 +0000 (15:40 +0100)]
introduce --with-rootlibdir=DIR
Support the installation of the shared library in the rootfs --rootlibdir=,
while the development symlink stays in --libdir=.
Lucas De Marchi [Thu, 22 Dec 2011 03:30:40 +0000 (01:30 -0200)]
Initialize line number with 0
Lucas De Marchi [Wed, 21 Dec 2011 22:10:43 +0000 (20:10 -0200)]
Remove useless warning causing trouble in sparc64
-Wcast-align is not that useful and just generates lots of warnings in
architectures like sparc64.
Gustavo Sverzut Barbieri [Wed, 21 Dec 2011 20:23:58 +0000 (18:23 -0200)]
Fix unaligned memory access
Bug found on sparc64. Thanks to "Jan Engelhardt <jengelh@medozas.de>"
for providing access to such a machine.
Kay Sievers [Wed, 21 Dec 2011 13:48:07 +0000 (11:48 -0200)]
do not (mis-)use the config file generator for non-autobuild stuff
"Similarly, you should not rely on AC_CONFIG_FILES to replace bindir
and friends in your shell scripts and other files; instead, let make
manage their replacement."
http://www.gnu.org/software/autoconf/manual/autoconf.html#Makefile-Substitutions
Lucas De Marchi [Wed, 21 Dec 2011 13:44:25 +0000 (11:44 -0200)]
gitignore: ignore dist files
Lucas De Marchi [Wed, 21 Dec 2011 01:48:46 +0000 (23:48 -0200)]
kmod 2
Lucas De Marchi [Wed, 21 Dec 2011 01:39:56 +0000 (23:39 -0200)]
Change error message to reflect reality
Lucas De Marchi [Wed, 21 Dec 2011 01:39:30 +0000 (23:39 -0200)]
Update doc to reflect function behavior
Luis Felipe Strano Moraes [Tue, 20 Dec 2011 16:13:56 +0000 (08:13 -0800)]
Testing for return of alias_normalize.
Lucas De Marchi [Tue, 20 Dec 2011 21:45:59 +0000 (19:45 -0200)]
build-sys: do not use some compile flags by default
Lucas De Marchi [Tue, 20 Dec 2011 21:31:14 +0000 (19:31 -0200)]
Removing comments saying flags are not implemented
Both removal and insertion flags are already implemented.
Lucas De Marchi [Tue, 20 Dec 2011 19:08:53 +0000 (17:08 -0200)]
Move symbols introduced in libkmod2 to the right place
Lucas De Marchi [Tue, 20 Dec 2011 18:57:11 +0000 (16:57 -0200)]
build-sys: remove remaining _SOURCES var
Lucas De Marchi [Tue, 20 Dec 2011 18:52:21 +0000 (16:52 -0200)]
build-sys: default to "" as rootprefix
Lucas De Marchi [Tue, 20 Dec 2011 18:39:59 +0000 (16:39 -0200)]
kmod_modprobe: fix description of -C flag
Gustavo Sverzut Barbieri [Tue, 20 Dec 2011 18:30:01 +0000 (16:30 -0200)]
configure: disable static zlib build.
It was not being done correctly, disable until we find a way for
libtool to cooperate.
Kay Sievers [Tue, 20 Dec 2011 16:58:05 +0000 (17:58 +0100)]
introduce --with-rootprefix=DIR
Configure the location of the rootfs directories and use it
to find (/usr)/lib/modules and (/usr)/lib/modprobe.d.
Lucas De Marchi [Tue, 20 Dec 2011 17:56:31 +0000 (15:56 -0200)]
Use sorted configuration files in precedence order
We need to keep config files sorted and use them taking the precedence
order into account.
The following message was taken from module-init-tools commit doing a
similar thing:
Configuration files are parsed in alphabetic order, regardles of
what directory they reside in. Furthermore, if several files by
the same name exist in different directories only the one in the
directory with highest precedence is loaded.
The order of precedence is /run, /etc, /usr/lib, /lib.
The sad thing is that we are not using openat() anymore since each file
is in different directories. In future we might change the
implementation to open all DIRs and keep a reference
to them instead of the path. However we'd have to keep a separate list
with all the opened dirs so we can close them later (when all configs
are parsed).
Jan Engelhardt [Tue, 20 Dec 2011 15:28:27 +0000 (16:28 +0100)]
build: use dist-xz
It's 2011 already.
Jan Engelhardt [Tue, 20 Dec 2011 15:27:07 +0000 (16:27 +0100)]
gitignore: only ignore build system files in the top directory
Jan Engelhardt [Tue, 20 Dec 2011 15:27:40 +0000 (16:27 +0100)]
libkmod: use C99 __func__ over GNU-specific __FUNCTION__
Lucas De Marchi [Tue, 20 Dec 2011 15:25:24 +0000 (13:25 -0200)]
kmod_config: fix kcmd line parser with dots after =
Check if '=' appeared before the dot. In this case, it's not a valid
module option in kernel command line.
The command line that was failing is:
"root=/dev/sda3 ro pcie_aspm=force init=/sbin/bootchartd
initrd=../initramfs-linux.img BOOT_IMAGE=../vmlinuz-linux"
Luis Felipe Strano Moraes [Tue, 20 Dec 2011 15:11:46 +0000 (07:11 -0800)]
Removing warnings when compiling on i686 platform.
Gustavo Sverzut Barbieri [Tue, 20 Dec 2011 15:04:10 +0000 (13:04 -0200)]
kmod_module_new_*: improve debugging.
Lucas De Marchi [Tue, 20 Dec 2011 15:11:33 +0000 (13:11 -0200)]
kmod_modprobe: Fix regression when inserting module
Commit "e5e2a68 kmod_modprobe: properly handle install/remove commands"
introduced a regression that, while it worked for install/remove
commands, it ceased to work for normal module names. Move the check for
whether it's a install command or a module so both cases work.
Lucas De Marchi [Tue, 20 Dec 2011 14:29:13 +0000 (12:29 -0200)]
Fix check for opened indexes
Lucas De Marchi [Tue, 20 Dec 2011 14:04:21 +0000 (12:04 -0200)]
elf: fix regression with empty strings
Commit "b20dc17 Remove unneeded reference to last string" reverted the
fix in "47a0ef6 elf: do not output empty strings." and empty strings are
appearing again in kmod-modinfo.
With this commit we do a bit different and instead of keeping the
reference to last string we skip the '\0' inside the loop.
Lucas De Marchi [Tue, 20 Dec 2011 13:41:19 +0000 (11:41 -0200)]
Cache the offset of crc
This way we don't need to check every time in loop. Indeed compiler
could already optimize out that checks, but this ways is cleaner and
shorter.
Lucas De Marchi [Tue, 20 Dec 2011 06:02:15 +0000 (04:02 -0200)]
Make section size constant since it's always the same
Lucas De Marchi [Tue, 20 Dec 2011 05:25:23 +0000 (03:25 -0200)]
Optimize kmod_elf_get_strings() by reducing calls to memcpy
Copy the entire string only once and then scan it, setting up the
pointers of the vector.
Lucas De Marchi [Tue, 20 Dec 2011 05:12:35 +0000 (03:12 -0200)]
Remove unneeded reference to last string
Lucas De Marchi [Tue, 20 Dec 2011 05:10:58 +0000 (03:10 -0200)]
Put blank lines where it's due
See CODING-STYLE for reference
Lucas De Marchi [Tue, 20 Dec 2011 05:09:58 +0000 (03:09 -0200)]
Terminate strv with NULL
Lucas De Marchi [Tue, 20 Dec 2011 05:08:09 +0000 (03:08 -0200)]
Reduce ident by continuing early
Lucas De Marchi [Mon, 19 Dec 2011 20:07:37 +0000 (18:07 -0200)]
build-sys: remove unneeded _SOURCES vars
Gustavo Sverzut Barbieri [Mon, 19 Dec 2011 23:53:24 +0000 (21:53 -0200)]
elf: skip leading symbol dot in modversion.
Mimics module-init-tools's dump_modversions() that calls skip_dot()
to skip leading dots. This is required for PPC64.
Gustavo Sverzut Barbieri [Mon, 19 Dec 2011 23:51:31 +0000 (21:51 -0200)]
elf: fix typo that resulted in invalid uint reads for big-endian platforms.
Gustavo Sverzut Barbieri [Mon, 19 Dec 2011 20:31:15 +0000 (18:31 -0200)]
kmod-modinfo: -p (-F parm) shows also parmtype in Debian expected formatting.
debian expected formatting is:
name:description (type)
variants:
name:description
name: (type)
Gustavo Sverzut Barbieri [Mon, 19 Dec 2011 19:42:34 +0000 (17:42 -0200)]
elf: do not output empty strings.
Gustavo Sverzut Barbieri [Mon, 19 Dec 2011 19:41:09 +0000 (17:41 -0200)]
kmod-modinfo: fix typo and output format.
* it's parm, not param (does not have the second 'a');
* output format requires ':' after the name.
Gustavo Sverzut Barbieri [Mon, 19 Dec 2011 19:28:06 +0000 (17:28 -0200)]
kmod-modinfo: add missing short options.
Thanks to falconindy for testing.
Gustavo Sverzut Barbieri [Mon, 19 Dec 2011 16:48:07 +0000 (14:48 -0200)]
Introduce kmod-modinfo.
Gustavo Sverzut Barbieri [Mon, 19 Dec 2011 16:34:00 +0000 (14:34 -0200)]
elf: fix minimum file size calculation.
there is only a single file header, multiple sections.
Gustavo Sverzut Barbieri [Mon, 19 Dec 2011 15:02:15 +0000 (13:02 -0200)]
kmod-modprobe: improve --help output.
Gustavo Sverzut Barbieri [Mon, 19 Dec 2011 14:45:22 +0000 (12:45 -0200)]
kmod-modprobe: implement --dump-modversions
Gustavo Sverzut Barbieri [Sun, 18 Dec 2011 03:25:06 +0000 (01:25 -0200)]
ELF: initial support for modinfo and strip of modversions and vermagic.
Needs testing, but should work.
Lucas De Marchi [Mon, 19 Dec 2011 16:36:23 +0000 (14:36 -0200)]
Fix debug message formatting
Gustavo Sverzut Barbieri [Mon, 19 Dec 2011 13:37:08 +0000 (11:37 -0200)]
TODO: add idea about single file with all compressed modules.
Lucas De Marchi [Mon, 19 Dec 2011 04:26:34 +0000 (02:26 -0200)]
kmod_modprobe: properly handle install/remove commands
Handle install/remove commands just like modprobe does. Test configure
file:
install installme echo "this is a install message"
remove removeme echo "this is a remove message"
Tests:
$ ./tools/kmod-modprobe installme
this is a install message
$ ./tools/kmod-modprobe -r removeme
this is a remove message
$ ./tools/kmod-modprobe removeme
FATAL: Module removeme not found.
./tools/kmod-modprobe -r installme
FATAL: Module installme not found.
Lucas De Marchi [Mon, 19 Dec 2011 04:18:14 +0000 (02:18 -0200)]
kmod_modprobe: fix handling of remove commands
The check for remove/install commands must be before the ignore_loaded
check because we will actually run something instead of
removing/inserting a module and the modname might not correspond to a
real module. Otherwise a fake module like "remove removeme echo 'bla'"
would not work.
This also keeps compatibility with modprobe.
Lucas De Marchi [Sun, 18 Dec 2011 17:12:19 +0000 (15:12 -0200)]
Fix wrong name len when converting path to modname
Lucas De Marchi [Sun, 18 Dec 2011 03:35:30 +0000 (01:35 -0200)]
Fix leak of kmod_module
Gustavo Sverzut Barbieri [Sat, 17 Dec 2011 00:43:04 +0000 (22:43 -0200)]
compatibility: match commands using fnmatch() instead of strcmp().
module-init-tools modprobe.c use fnmatch() and not strcmp() to match
commands and softdeps, although the man page does not say so. Then use
the same function to provide compatibility.
Gustavo Sverzut Barbieri [Sat, 17 Dec 2011 00:35:28 +0000 (22:35 -0200)]
kmod-modprobe: implement softdeps.
Implement soft dependencies in a way similar to module-init-tools
modprobe. Unlike regular dependencies they are allowed to fail
inserting or removing.
The rmmod version walks the lists in reverse order, also doing post
before and pre later.
Gustavo Sverzut Barbieri [Sat, 17 Dec 2011 00:33:08 +0000 (22:33 -0200)]
introduce kmod_list_foreach_reverse().
walks the list in the reverse order.
Lucas De Marchi [Sat, 17 Dec 2011 22:03:13 +0000 (20:03 -0200)]
Use tab instead of spaces
Gustavo Sverzut Barbieri [Sat, 17 Dec 2011 00:32:33 +0000 (22:32 -0200)]
introduce kmod_list_last()
This gets the last element in the list, that is, the previous element
of the head.
Gustavo Sverzut Barbieri [Sat, 17 Dec 2011 00:27:02 +0000 (22:27 -0200)]
fix kmod_list_prev().
kmod_list_prev() should return NULL if the current element is the
head, not if the previous element is the head. This was likely a copy
& paste error from kmod_list_next().
Gustavo Sverzut Barbieri [Fri, 16 Dec 2011 23:18:10 +0000 (21:18 -0200)]
implement softdeps.
Gustavo Sverzut Barbieri [Fri, 16 Dec 2011 18:17:50 +0000 (16:17 -0200)]
fix error handling path.
Gustavo Sverzut Barbieri [Fri, 16 Dec 2011 18:08:53 +0000 (16:08 -0200)]
implement zlib module loading.
Lucas De Marchi [Fri, 16 Dec 2011 05:57:12 +0000 (03:57 -0200)]
Lookup for commands in kmod_module_new_from_lookup()
Install and remove commands are now properly treated on lookup. Example
config file:
$ ./test/test-lookup installme
libkmod version 1
Alias: 'installme'
Modules matching:
installme
install commands: 'echo "this is a install message"'
$ ./test/test-lookup removeme
libkmod version 1
Alias: 'removeme'
Modules matching:
removeme
remove commands: 'echo "this is a remove message"'
Lucas De Marchi [Fri, 16 Dec 2011 05:33:26 +0000 (03:33 -0200)]
kmod_module: do not find more than the first command
modprobe from module-init-tools does not use more than one
install/remove command, it just stops on the first one. Test
modprobe.conf:
install bla echo "this is a message"
install bla echo "this is a message"
$ modprobe bla
this is a message
$
Install and remove commands are already a legacy thing we need to carry,
but let's not extend it so people do not start doing crazy things.
With this patch we are breaking on the first element we find in the
configuration. May be we can add a warning later when parsing the config
that install commands are duplicated.
Cristian Rodríguez [Fri, 16 Dec 2011 17:46:52 +0000 (14:46 -0300)]
Open more file descriptors with O_CLOEXEC
Cristian Rodríguez [Fri, 16 Dec 2011 05:49:54 +0000 (02:49 -0300)]
Library must use O_CLOEXEC whenever it opens file descriptors
Lucas De Marchi [Fri, 16 Dec 2011 06:11:25 +0000 (04:11 -0200)]
Add address of mailing list
Lucas De Marchi [Fri, 16 Dec 2011 04:58:48 +0000 (02:58 -0200)]
tools: fix kmod-modprobe -R trying to insert module
Lucas De Marchi [Fri, 16 Dec 2011 04:02:58 +0000 (02:02 -0200)]
TODO: add new tasks and notes to future development
Ulisses Furquim [Thu, 15 Dec 2011 21:17:49 +0000 (19:17 -0200)]
trivial: fix typo causing an infinite loop
Lucas De Marchi [Thu, 15 Dec 2011 17:43:58 +0000 (15:43 -0200)]
kmod 1
Lucas De Marchi [Thu, 15 Dec 2011 17:37:41 +0000 (15:37 -0200)]
Add libkmod files to EXTRA_DIST
Lucas De Marchi [Thu, 15 Dec 2011 15:43:22 +0000 (13:43 -0200)]
Remove module from hash when it's gone
Module was never being removed from hash table. Therefore, if we create
a module, unref it and create it again we will access freed memory.
Commit "53385cf Improve test of double references" introduced a new test
in test-mod-double-ref.c that previously to this commit was crashing and
now it's working fine.
Lucas De Marchi [Thu, 15 Dec 2011 15:42:54 +0000 (13:42 -0200)]
Improve test of double references
Lucas De Marchi [Thu, 15 Dec 2011 15:35:40 +0000 (13:35 -0200)]
Add safety NULL checks in exported functions
Lucas De Marchi [Thu, 15 Dec 2011 15:11:51 +0000 (13:11 -0200)]
Fix changing hash key after module is inserted in hash
The hash key is not copied so we can't change the string from:
modname/modalias
to:
modname'\0'modalias
in order to setup mod->name and mod->alias.
Now what we do is:
1) if name is in the form 'modname/modalias', the final struct
kmod_module will be:
struct kmod_module {
char *alias;------,
char *name;-----, |
char *hashkey;--|-|-,
} | | |
name <------------------' | |
alias <-------------------' |
hashkey <-------------------'
2) if name is in the simple form 'modname', then the final struct
kmod_module will be:
struct kmod_module {
char *alias;------> NULL
char *name;-----,
char *hashkey;--|---,
} | |
name <------------------*---'
Lucas De Marchi [Thu, 15 Dec 2011 15:09:46 +0000 (13:09 -0200)]
Fix docs with wrong function names
Lucas De Marchi [Thu, 15 Dec 2011 14:27:45 +0000 (12:27 -0200)]
Add comment in public header about flags not implemented
Lucas De Marchi [Thu, 15 Dec 2011 14:26:15 +0000 (12:26 -0200)]
Rename symbol group