opensuse:module-init-tools.git
8 years agodepmod: add some comments to the code v3.12-pre3
Jon Masters [Tue, 25 May 2010 18:53:06 +0000 (14:53 -0400)]
depmod: add some comments to the code

Some comments I was working on recently. More coming later.

Signed-off-by: Jon Masters <jcm@jonmasters.org>
8 years agoBUGS: Update the bugs file
Jon Masters [Tue, 25 May 2010 04:48:57 +0000 (00:48 -0400)]
BUGS: Update the bugs file

8 years agoBUGS: Tracking bugs being worked on from bugzilla
Jon Masters [Tue, 25 May 2010 04:47:06 +0000 (00:47 -0400)]
BUGS: Tracking bugs being worked on from bugzilla

BUGS contains bugs being worked on/status if they are simple enough
for ease of reference - canonical source is bugzilla.kernel.org

Signed-off-by: Jon Masters <jcm@jonmasters.org>
8 years agopre-release: module-init-tools v3.12-pre3 v3.3-pre13
Jon Masters [Tue, 4 May 2010 05:13:43 +0000 (01:13 -0400)]
pre-release: module-init-tools v3.12-pre3

A few more misc. fixes. Assuming nothing blows up 3.12 will follow
with a couple more fixes shortly after this one.

Signed-off-by: Jon Masters <jcm@jonmasters.org>
8 years agobuild: handle old (System V) style wc output
Alan Jenkins [Tue, 4 May 2010 05:10:01 +0000 (01:10 -0400)]
build: handle old (System V) style wc output

wc -w may output "      0" instead of "0".  Handle this using an integer
comparison (instead of a string comparison).

Signed-off-by: Jon Masters <jcm@jonmasters.org>
8 years agomodprobe: try to remove unused modules first
Alan Jenkins [Tue, 16 Mar 2010 17:49:58 +0000 (17:49 +0000)]
modprobe: try to remove unused modules first

This allows e.g. removing all alsa modules with

    modprobe -r `lsmod|cut -d " " -f1|grep snd`

or even removing all currently unused modules.

    modprobe -r `lsmod|cut -d " " -f1|grep -v Module`

8 years agomodprobe: pull underscores() out of do_modprobe()
Alan Jenkins [Tue, 16 Mar 2010 13:36:36 +0000 (13:36 +0000)]
modprobe: pull underscores() out of do_modprobe()

The softdep parser should probably have done the conversion already.

Both callers (do_softdep() and main()) are able to run underscores()
in-place.  So this means we don't need to allocate and free a copy.

It also makes the next commit easier.

8 years agomodprobe: --dump-modversions takes one filename only
Alan Jenkins [Tue, 16 Mar 2010 13:55:27 +0000 (13:55 +0000)]
modprobe: --dump-modversions takes one filename only

[--all would have worked, but that wasn't documented as a feature]
Fix the documentation.  Move the code out of the top-level loop.

This also makes the next commit easier.

8 years agomodprobe: remove some redundant softdep code
Alan Jenkins [Tue, 16 Mar 2010 14:55:50 +0000 (14:55 +0000)]
modprobe: remove some redundant softdep code

If we can't find a module, we don't need to check for a softdep.

The initial softdep design allowed you to define "fake" modules, in the
same way as with install commands.  But we decided this had only bad
effects, so the feature was removed.

8 years agomodprobe: remove support for renaming modules
Alan Jenkins [Tue, 16 Mar 2010 12:59:51 +0000 (12:59 +0000)]
modprobe: remove support for renaming modules

This was prompted by the observation that do_softdep() doesn't implement
module renaming.

Searching for "modprobe -o" and "modprobe --name" turns up two possible
uses: creating multiple instances of the "bonding" or "dummy" network
devices.  Modern kernels provide cleaner ways to do this.  The old
way using "modprobe --name" doesn't work any more.

<https://bugzilla.redhat.com/show_bug.cgi?id=247718>
"Bonding Module fails to recognise the '-o' parameter on load"

    Comment #1 should explain how to resolve this issue.
    To create an additional bond on rhel5, please do this:

    # echo another_name > /sys/class/net/bonding_masters

    rather than using modprobe. The kernel's bonding code now uses
    sysfs for configuration of multiple bonds

<http://lkml.org/lkml/2007/6/8/381>
"2.6 kernel: Cannot make multiple dummy network interfaces"

    [solution was to use the "numdummies" module option]

8 years agomodprobe: fix softdep flags
Alan Jenkins [Mon, 15 Mar 2010 15:34:38 +0000 (15:34 +0000)]
modprobe: fix softdep flags

1. When a softdep is present, all the flags e.g.
   --use-blacklist are being ignored.  Fix that.

2. When processing softdeps, mask out the "first_time"
   flag.  This brings them into line with both install
   commands and normal dependencies.  (We don't need to
   worry about "ignore_commands", because it would
   prevent softdeps from being loaded in the first
   place).  If we're unloading, we should also mask in
   the "quiet_inuse" flag.

8 years agomodprobe: fix dump_config
Alan Jenkins [Tue, 16 Mar 2010 11:22:40 +0000 (11:22 +0000)]
modprobe: fix dump_config

I broke this when refactoring the config handling.  --show-config
ended up printing the contents of user config files twice. Also
parse_kcmdline() was always called with dump_only=1, regardless of
whether --show-config was requested.

8 years agodoc: fix sgml errors
Alan Jenkins [Wed, 17 Mar 2010 10:13:28 +0000 (10:13 +0000)]
doc: fix sgml errors

8 years agodoc: fix typo
Alan Jenkins [Mon, 15 Mar 2010 14:29:22 +0000 (14:29 +0000)]
doc: fix typo

8 years agobuild: remove explicit call to build modules.dep.bin v3.12-pre2
Jon Masters [Wed, 10 Mar 2010 08:51:56 +0000 (03:51 -0500)]
build: remove explicit call to build modules.dep.bin

There's a known bug with docbook2man in some cases (Fedora) not
following multiple names for a manpage and only generating a
single output file. We use links in the source to ensure
those other versions will be built if possible. A better
fix will be to figure out how to make docbook2man behave.

Signed-off-by: Jon Masters <jcm@jonmasters.org>
8 years agobuild: fix the release location for automated builds
Jon Masters [Wed, 10 Mar 2010 08:21:20 +0000 (03:21 -0500)]
build: fix the release location for automated builds

The location for my test builds is in a new directory.

Signed-off-by: Jon Masters <jcm@jonmasters.org>
8 years agodoc: fix reference for modules.dep.bin
Jon Masters [Wed, 10 Mar 2010 08:18:58 +0000 (03:18 -0500)]
doc: fix reference for modules.dep.bin

The build scripts calling out to docbook2man need to have entries
in the individual man page sources for each of the output files.
Correct the missing entry for the modules.dep.bin file.

Signed-off-by: Jon Masters <jcm@jonmasters.org>
8 years agopre-release: module-init-tools v3.12-pre2
Jon Masters [Wed, 10 Mar 2010 07:19:32 +0000 (02:19 -0500)]
pre-release: module-init-tools v3.12-pre2

The latest pre-release version including all of the hard work on
softdep support from Andreas and some cleanups from Alan and I.

Signed-off-by: Jon Masters <jcm@jonmasters.org>
8 years agomodprobe: fix the softdep docs and re-order the modprobe.conf man page
Jon Masters [Wed, 10 Mar 2010 06:12:24 +0000 (01:12 -0500)]
modprobe: fix the softdep docs and re-order the modprobe.conf man page

The softdep docs were great but I cleaned them up slightly, and I also
added a warning to the new COMPATIBILITY section I had added recently.
Also, re-order this file so that everything is in alphabetical order.

Signed-off-by: Jon Masters <jcm@jonmasters.org>
8 years agomodprobe: trivial cleanups post-merge of softdep bits
Jon Masters [Wed, 10 Mar 2010 06:10:39 +0000 (01:10 -0500)]
modprobe: trivial cleanups post-merge of softdep bits

In order to merge in the softdep bits from alan, I wound up resetting
the dev tree and remerging the whole lot. Next time, I'll just review
the patches in another tree and then pull the lot, which is better.
These two trivial differences were in my tree and are ok to keep.

Signed-off-by: Jon Masters <jcm@jonmasters.org>
8 years agoMerge branch 'alan-softdep-merge' into dev
Jon Masters [Wed, 10 Mar 2010 06:04:57 +0000 (01:04 -0500)]
Merge branch 'alan-softdep-merge' into dev

8 years agodepmod: trivial add comment to depmod.h
Jon Masters [Tue, 9 Mar 2010 06:01:39 +0000 (01:01 -0500)]
depmod: trivial add comment to depmod.h

Signed-off-by: Jon Masters <jcm@jonmasters.org>
8 years agoconfig_filter: add some documentation
Jon Masters [Thu, 4 Mar 2010 08:07:05 +0000 (03:07 -0500)]
config_filter: add some documentation

Signed-off-by: Jon Masters <jcm@jonmasters.org>
8 years agodoc: Further documentation updates and rewrites
Jon Masters [Tue, 2 Mar 2010 10:29:14 +0000 (05:29 -0500)]
doc: Further documentation updates and rewrites

The documentation has been sadly lacking. Fortunately, there is a new
wiki and some great plans for content on module design/implementation.
Until that is all done, at least get these docs in better shape.

Signed-off-by: Jon Masters <jcm@jonmasters.org>
8 years agotests: enable leak checking under --valgrind
Alan Jenkins [Tue, 2 Mar 2010 09:59:44 +0000 (09:59 +0000)]
tests: enable leak checking under --valgrind

Since we have squashed all the leaks (or at least the ones that show up
in the test suite), we can now use valgrind to look out for new ones.

One of the reasons for this exercise is the index code, which mixes
recursion with allocating and freeing memory.  Memory leaks may not
cause any problems at run-time - but they're still bugs, and bugs
can make code harder to maintain.

8 years agoMerge branch 'cleanups' into softdep-merge
Alan Jenkins [Tue, 2 Mar 2010 09:59:00 +0000 (09:59 +0000)]
Merge branch 'cleanups' into softdep-merge

Conflicts:
modprobe.c

8 years agomodprobe: re-use config data across multiple calls to do_modprobe()
Alan Jenkins [Fri, 26 Feb 2010 17:51:39 +0000 (17:51 +0000)]
modprobe: re-use config data across multiple calls to do_modprobe()

This avoids having do_softdep() leak the memory allocated for config
data.

8 years agomodprobe: complete the separation of config parsing and alias resolution
Alan Jenkins [Fri, 26 Feb 2010 15:59:22 +0000 (15:59 +0000)]
modprobe: complete the separation of config parsing and alias resolution

The parser now records all the aliases from the config file, deferring
alias resolution to do_modprobe().  This will allow the config data to
be re-used across multiple invocations of do_modprobe().

8 years agomodprobe: clean up minor memory leaks
Alan Jenkins [Fri, 26 Feb 2010 14:48:27 +0000 (14:48 +0000)]
modprobe: clean up minor memory leaks

 - "struct module"

 - use of setenv()

 - internal node leak in index_search() and index_searchwild()

 - some of the more obscure modprobe options, which were bypassing the
   cleanup code in main()

I can see only one more leak (which occurred during the softdep work):

 - the contents of "struct modprobe_conf"

8 years agomodprobe: re-enable inadvertently disabled options
Jon Masters [Tue, 2 Mar 2010 05:30:37 +0000 (00:30 -0500)]
modprobe: re-enable inadvertently disabled options

At some point several short options versions (-S, -D, -R) were inadvertently
disabled. The first is used to override the kernel version, the second is used
to dump dependency information, and the third dumps resolved alias information.

The documentation was updated in the manpages in the previous commit and is
now in sync with how modprobe is actually implemented.

Signed-off-by: Jon Masters <jcm@jonmasters.org>
8 years agodoc: cleanup all of the man page documentation
Jon Masters [Tue, 2 Mar 2010 05:26:27 +0000 (00:26 -0500)]
doc: cleanup all of the man page documentation

The man pages have suffered from a little bitrot over time. Fix that by
updating them with references to recent changes, noting some planned
future behavioral changes (modprobe "install" commands), and improve
readability by re-ordering modprobe options to ensure everything is
documented in the current release.

Signed-off-by: Jon Masters <jcm@jonmasters.org>
8 years agometa: update various documentation, logs, authors, etc.
Jon Masters [Mon, 1 Mar 2010 04:38:08 +0000 (23:38 -0500)]
meta: update various documentation, logs, authors, etc.

The various files within the tree documenting who did what and when were
rather sadly out of date. I have begun cleaning this up properly.

Signed-off-by: Jon Masters <jcm@jonmasters.org>
8 years agomodprobe: refactor read_aliases()
Alan Jenkins [Fri, 26 Feb 2010 14:43:29 +0000 (14:43 +0000)]
modprobe: refactor read_aliases()

It doesn't care whether we are "removing", and it only parses aliases
(not an entire config).

Enhance readability by splitting it into two functions, for binary
and text files respectively.  This matches the way read_depends()
is written.

Fix some sites to use read_aliases() instead of parse_config_file().

8 years agoinsmod: fix memory leak
Alan Jenkins [Wed, 30 Sep 2009 16:22:10 +0000 (17:22 +0100)]
insmod: fix memory leak

insmod makes a half-successful attempt to clean up on failure.  Let's
make it clean up on all failures, and remember to clean up on success
as well.

This leaves modprobe as the only leaky program, at least for the code
paths executed by the test suite.

Signed-off-by: Alan Jenkins <alan-jenkins@tuffmail.co.uk>
8 years agomodprobe: fix memory leak when built with zlib support
Alan Jenkins [Wed, 30 Sep 2009 16:22:10 +0000 (17:22 +0100)]
modprobe: fix memory leak when built with zlib support

We don't use posix file locks anymore, so we don't need to play games
with fds, and we don't need to worry about dropping locks when we close
fds.  This allows us to simplify the code a bit and remove the
intentional memory leak.

Signed-off-by: Alan Jenkins <alan-jenkins@tuffmail.co.uk>
8 years agoelfops: fix crash on grab_fd() failure
Alan Jenkins [Wed, 30 Sep 2009 16:22:10 +0000 (17:22 +0100)]
elfops: fix crash on grab_fd() failure

If we call release_elf_file() when grab_fd() fails, it will call
release_file() with a NULL pointer and undefined length.  This can
cause a crash when zlib support is disabled and release_file() is
implemented using munmap().

This is only theoretical at the moment.  However it will allow
grab_elf_file_fd() to be removed straightforwardly, without
creating a more significant bug.

Signed-off-by: Alan Jenkins <alan-jenkins@tuffmail.co.uk>
8 years agomodprobe: fix potential memory leak on failure path
Alan Jenkins [Wed, 30 Sep 2009 16:22:10 +0000 (17:22 +0100)]
modprobe: fix potential memory leak on failure path

Ensure release_elf_file() is called on a rare failure path.

Signed-off-by: Alan Jenkins <alan-jenkins@tuffmail.co.uk>
8 years agomodprobe: simplify insmod() calling convention - don't free optstring
Alan Jenkins [Wed, 30 Sep 2009 16:22:10 +0000 (17:22 +0100)]
modprobe: simplify insmod() calling convention - don't free optstring

There's no need to clobber optstring; we can afford to make a copy.

Signed-off-by: Alan Jenkins <alan-jenkins@tuffmail.co.uk>
8 years agomodprobe: clean up mit_ignore_loaded flag in rmmod()
Alan Jenkins [Wed, 30 Sep 2009 16:22:11 +0000 (17:22 +0100)]
modprobe: clean up mit_ignore_loaded flag in rmmod()

handle_module() clears mit_ignore_loaded before calling rmmod(). So we
didn't really want to set it in the first place!  Also, rmmod() uses the
flag to mean something which differs both from the name itself, and the
way it is used in insmod().

Replace the mit_ignore_loaded in rmmod() with a new flag mit_quiet_inuse
(it means not to complain if the module cannot be removed because it is
in use).

Signed-off-by: Alan Jenkins <alan-jenkins@tuffmail.co.uk>
8 years agoFix SGML docs in module-init-tools-3.11
Thomas Koeller [Thu, 11 Feb 2010 19:18:05 +0000 (20:18 +0100)]
Fix SGML docs in module-init-tools-3.11

Hi Jon,

there is a bug in module-init-tools-3.11 that leads to an error when building the man pages. The patch below fixes it.

Signed-off-by: Jon Masters <jcm@modules.bos.jonmasters.org>
8 years agoFix depmod -e without -F or -E unterminated warning
Gilles Espinasse [Tue, 16 Feb 2010 14:02:04 +0000 (15:02 +0100)]
Fix depmod -e without -F or -E unterminated warning

Signed-off-by: Gilles Espinasse <g.esp@free.fr>
Signed-off-by: Jon Masters <jcm@modules.bos.jonmasters.org>
8 years agopre-release: initial version for 3.12 v3.12-pre1
Jon Masters [Fri, 15 Jan 2010 07:10:19 +0000 (02:10 -0500)]
pre-release: initial version for 3.12

This is the initial release that will become 3.12. It has a few cleanups. I
will next work on the softdep patches.

Signed-off-by: Jon Masters <jcm@jonmasters.org>
8 years agoMerge branch 'master' of ../module-init-tools_alan
Jon Masters [Fri, 15 Jan 2010 07:02:48 +0000 (02:02 -0500)]
Merge branch 'master' of ../module-init-tools_alan

8 years agodepmod: use real regex matching on depmod "overrides" entries
Jon Masters [Fri, 15 Jan 2010 06:55:02 +0000 (01:55 -0500)]
depmod: use real regex matching on depmod "overrides" entries

We implement support for matching "override" entries in depmod config
files to determine which module of several alternatives will be used.

The existing implementation is a very poor "wildcard" match that does
not use real regular expressions. This version uses the standard POSIX
extended regular expressions, with backward compatibility to match on
a single "*" kernel version as in the original (broken) design.

Signed-off-by: Jon Masters <jcm@jonmasters.org>
8 years agoBug#548841: module-init-tools: Modprobe -q should always return 0.
Philipp Weis [Sun, 18 Oct 2009 03:50:08 +0000 (23:50 -0400)]
Bug#548841: module-init-tools: Modprobe -q should always return 0.

On 2009-09-30 16:49, Alan Jenkins <sourcejedi.lkml@googlemail.com> wrote:
> On 9/29/09, Alan Jenkins <sourcejedi.lkml@googlemail.com> wrote:
> >> When calling modprobe -q with a non-existing module, it returns with
> >> exit code 1. According to the manpage, modprobe "normally" will report
> >> an error, and with -q shouldn't, so I believe the exist code should
> >> always be 0, at least that seems to be the assumption in some init
> >> scripts (e.g. binfmt-support).
> >
> > That part is ambiguous, but I guess "modprobe will simply ignore any
> > bogus names" is pretty clear.
> >
>
> > ... and comments in the git log imply we _used_ to get this right.
> >
> > ""
> >
> > Andreas, at first glance this regression is due to your commit
> > 73bdf4ab.  Care to submit a patch to revert the relevant lines?
>
> Sorry, I completely misread both the git log comments and Andreas'
> code.  This isn't a regression, it's more of a feature request.
>
> The manpage does say modprobe -q "will simply ignore any bogus names",
> implying that modprobe should return success in this case.  But
> test-modprobe/19quiet.sh has always required "modprobe -q crap" to
> return failure.
>
> So this is intentional at some level, we've always done it this way in
> the past, and we need to consider the risk of breaking scripts which
> expect the current behaviour.
>
> The binfmt-support initscript seems a bad example to me.  It does this
>
>    # comments added by me
>
>     set -e # abort if any command fails
>     ...
>     modprobe -q binfmt_misc # this will cause an abort if
> binfmt_misc.ko doesn't exist...
>     mount -t binfmt_misc ... # but so will this
>
> It's only a problem if binfmt_misc is built into the kernel.  However,
> this will be solved by the modules.builtin work.
>
> So I think we would need a better justification to change this.

Ok, but then the manpage should be fixed. How about the attached
patch?

Philipp

--
Philipp Weis

Signed-off-by: Jon Masters <jcm@jonmasters.org>
8 years agoax_enable_builddir: improve quality of generated top-level Makefile
Alan Jenkins [Sat, 24 Oct 2009 12:56:53 +0000 (13:56 +0100)]
ax_enable_builddir: improve quality of generated top-level Makefile

The top-level Makefile is generated by mangling rules, "a: b".  We
already avoid mangling "a := b".  But we should also exclude "a = :".

Apparently this was causing unbalanced parenthesis errors on some
systems.

Reported-by: Mike Frysinger <vapier@gentoo.org>
Signed-off-by: Alan Jenkins <alan-jenkins@tuffmail.co.uk>
Signed-off-by: Jon Masters <jcm@jonmasters.org>
8 years agodepmod: generate modules.softdep
Andreas Robinson [Thu, 5 Nov 2009 15:24:52 +0000 (16:24 +0100)]
depmod: generate modules.softdep

Signed-off-by: Andreas Robinson <andr345@gmail.com>
8 years agorelease: module-init-tools v3.11.1 v3.11.1
Jon Masters [Wed, 21 Oct 2009 04:07:58 +0000 (05:07 +0100)]
release: module-init-tools v3.11.1

Bump the release to 3.11.1 since the previous tarballs didn't have the
correct generated documentation files present.

Signed-off-by: Jon Masters <jcm@jonmasters.org>
8 years agodoc: add softdep command
Andreas Robinson [Fri, 16 Oct 2009 09:50:11 +0000 (11:50 +0200)]
doc: add softdep command

Signed-off-by: Andreas Robinson <andr345@gmail.com>
8 years agorelease: module-init-tools v3.11 v3.11
Jon Masters [Thu, 15 Oct 2009 09:59:28 +0000 (11:59 +0200)]
release: module-init-tools v3.11

No major issues reported with the -rc1 so bump to v3.11 final and move on.

Signed-off-by: Jon Masters <jcm@jonmasters.org>
8 years agomodprobe: change softdep --pre/--post to pre:/post:
Andreas Robinson [Mon, 12 Oct 2009 08:26:58 +0000 (10:26 +0200)]
modprobe: change softdep --pre/--post to pre:/post:

"--" is modified by underscores(). This would have made the
future implementation of softdep in .modinfo more complicated.

Signed-off-by: Andreas Robinson <andr345@gmail.com>
8 years agotest: add softdep test, modprobe: fix simple bugs in do_softdep
Andreas Robinson [Sat, 10 Oct 2009 14:56:28 +0000 (16:56 +0200)]
test: add softdep test, modprobe: fix simple bugs in do_softdep

Signed-off-by: Andreas Robinson <andr345@gmail.com>
8 years agomodprobe: add simple softdep loop detector
Andreas Robinson [Sun, 4 Oct 2009 15:18:38 +0000 (17:18 +0200)]
modprobe: add simple softdep loop detector

Signed-off-by: Andreas Robinson <andr345@gmail.com>
8 years agoelfops: remove errfn_t from load_strings
Andreas Robinson [Sun, 4 Oct 2009 15:00:43 +0000 (17:00 +0200)]
elfops: remove errfn_t from load_strings

Commit 528db92ab1dd0d75dba415b9f3dc81f5a34773ce added an errfn_t
parameter to elfops_core.c:load_strings. This was for the purpose
of detecting missing terminators at the end of ELF-sections with
strings in them, such as .modinfo.

However, the committer (that'd be me) forgot to add any actual code to
load_strings() and now the errfn_t parameter complicates the error
handling when softdep is used.

This commit removes that parameter and adds a non-fatal warning message.

Signed-off-by: Andreas Robinson <andr345@gmail.com>
8 years agomodprobe: add softdep command
Andreas Robinson [Sat, 3 Oct 2009 19:30:18 +0000 (21:30 +0200)]
modprobe: add softdep command

Imlementation notes
-------------------

* find_softdep()/do_softdep() mirrors find_command()/do_command()
  precisely. (And if they don't, that's a bug.)

* Failures in the indirect modprobes, ie. those run by the softdep
  command, are ignored. This seems correct for removing, but I'm
  unsure what the proper action is when installing.

An example - or how it's supposed to work
-----------------------------------------

Configuration:
softdep foo --pre pre1 pre2 --post post1 post2

Installing a module:

$modprobe foo <CMDLINE_OPTS>

yields

modprobe pre1
modprobe pre2
modprobe --ignore-install foo <CMDLINE_OPTS>
modprobe post1
modprobe post2

Likewiese, removing a module:

$modprobe -r foo

yields

modprobe -r post2
modprobe -r post1
modprobe --ignore-remove -r foo
modprobe -r pre2
modprobe -r pre1

Signed-off-by: Andreas Robinson <andr345@gmail.com>
8 years agomodprobe: don't modify the modname string passed to do_modprobe
Andreas Robinson [Sat, 3 Oct 2009 19:20:23 +0000 (21:20 +0200)]
modprobe: don't modify the modname string passed to do_modprobe

The function will work on a copy instead.

Signed-off-by: Andreas Robinson <andr345@gmail.com>
8 years agomodprobe: enable calling do_modprobe from within handle_module,insmod,rmmod
Andreas Robinson [Sat, 3 Oct 2009 18:39:21 +0000 (20:39 +0200)]
modprobe: enable calling do_modprobe from within handle_module,insmod,rmmod

A new function, do_softdep(), will be invoked from the same locations
as do_command() as it eventually will replace it. do_softdep() in turn
needs to call do_modprobe().

This commit adds some parameters to do_modprobe, handle_module,
insmod and rmmod, needed to make this possible.

The pathnames for "module.symbols" and "modules.alias" are now
generated wherever they're needed, rather than in main().

Signed-off-by: Andreas Robinson <andr345@gmail.com>
8 years agomodprobe: put configuration objects in a struct
Andreas Robinson [Sat, 3 Oct 2009 18:22:48 +0000 (20:22 +0200)]
modprobe: put configuration objects in a struct

It is now possible to add or remove conf commands without rewriting
the function declarations of e.g parse_config_*() every time.

Signed-off-by: Andreas Robinson <andr345@gmail.com>
8 years agomodprobe: cleanup indentation change in conf parser
Andreas Robinson [Sat, 3 Oct 2009 18:18:35 +0000 (20:18 +0200)]
modprobe: cleanup indentation change in conf parser

Follow up to the previous commit.

Signed-off-by: Andreas Robinson <andr345@gmail.com>
8 years agomodprobe: reduce nesting in conf parser
Andreas Robinson [Sat, 3 Oct 2009 18:07:15 +0000 (20:07 +0200)]
modprobe: reduce nesting in conf parser

Helps readability and will simplify the softdep command parser.

Signed-off-by: Andreas Robinson <andr345@gmail.com>
8 years agoMerge branch 'master' into forkbomb
Alan Jenkins [Thu, 1 Oct 2009 09:18:00 +0000 (10:18 +0100)]
Merge branch 'master' into forkbomb

Conflicts:
modprobe.c

8 years agotestsuite: re-add test for /proc/modules support
Alan Jenkins [Wed, 30 Sep 2009 16:22:11 +0000 (17:22 +0100)]
testsuite: re-add test for /proc/modules support

Now we support /proc/modules as a fallback, we can revive the old
02proc.sh to provide testing coverage.

(The setup required alteration to fit with the current test suite,
 but the body of the test remains unchanged).

Signed-off-by: Alan Jenkins <alan-jenkins@tuffmail.co.uk>
8 years agotestsuite: fix tests for install/remove commands
Alan Jenkins [Wed, 30 Sep 2009 16:35:50 +0000 (17:35 +0100)]
testsuite: fix tests for install/remove commands

install and remove commands for real modules will now refuse to run,
if we don't provide a mockup of /sys/module.

Signed-off-by: Alan Jenkins <alan-jenkins@tuffmail.co.uk>
8 years agomodprobe: ignore custom remove commands if module_in_kernel() doesnt work
Alan Jenkins [Wed, 30 Sep 2009 16:30:41 +0000 (17:30 +0100)]
modprobe: ignore custom remove commands if module_in_kernel() doesnt work

If we're not sure whether a module is present, we can't be sure that it
is safe to run its remove command.

This patch follows logically from the previous two patches.  It provides
the same safeguard which has been added for install commands, in case
/sys/module/<module>/initstate is not available.

Signed-off-by: Alan Jenkins <alan-jenkins@tuffmail.co.uk>
8 years agomodprobe: don't run remove commands for modules which are not loaded
Alan Jenkins [Wed, 30 Sep 2009 16:22:11 +0000 (17:22 +0100)]
modprobe: don't run remove commands for modules which are not loaded

modprobe.d(5) strongly suggests you can use remove commands like this:

    remove snd-pcm /sbin/modprobe -r --ignore-remove snd-pcm-oss && \
/sbin/modprobe -r snd-pcm

Unfortunately, given that snd-pcm-oss depends on snd-pcm, this causes
an infinite fork-loop.

The solution is an exact parallel of the approach taken for install
commands.  AFAIK no-one uses remove commands, but it's good to make
the insmod() and rmmod() functions consistent.

Signed-off-by: Alan Jenkins <alan-jenkins@tuffmail.co.uk>
8 years agomodprobe: Get module initstate from /proc/modules if not supported via sysfs
Alan Jenkins [Wed, 30 Sep 2009 16:22:11 +0000 (17:22 +0100)]
modprobe: Get module initstate from /proc/modules if not supported via sysfs

Apparently /sys/module/<module>/initstate only appeared in 2.6.20,
which is still in use.

Copy the original module_in_kernel() verbatim from the GIT archives,
and use it as a fallback if module_in_sysfs() doesn't work.

The original patch suggestion was shorter, but less obvious, adding
more untested code, and turned out to be harder to test.

References: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=524940

Reported-by: Matthew J. Lockner <mlockner@iastate.edu>
Signed-off-by: Alan Jenkins <alan-jenkins@tuffmail.co.uk>
8 years agomodprobe: Don't assume module absent if no /sys/module/<module>/initstate
Alan Jenkins [Wed, 30 Sep 2009 16:23:38 +0000 (17:23 +0100)]
modprobe: Don't assume module absent if no /sys/module/<module>/initstate

/sys/module/<module>/initstate only appeared in 2.6.20.  If it is not
present, we cannot tell whether the module has finished loading
succesfully.  In this case module_in_kernel() should return -1
(undefined).

Take care to to distinguish between "initstate disappeared because the
module was just unloaded" and "initstate is absent but the module is
still present".

"Fork bombing" side effect of this bug is described in [1].
A followup patch will add a fallback to /proc/modules.

1. http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=524940

Thanks to Modestas Vainius <modestas@vainius.eu> for explaining the
problem.

Signed-off-by: Alan Jenkins <alan-jenkins@tuffmail.co.uk>
8 years agomodprobe: Ignore custom install commands if module_in_kernel() doesn't work
Alan Jenkins [Wed, 30 Sep 2009 16:22:11 +0000 (17:22 +0100)]
modprobe: Ignore custom install commands if module_in_kernel() doesn't work

Custom install commands rely on a working module_in_kernel() to avoid
an infinite fork-loop.  This can fail if /sys/module/ is not available
(i.e. before sysfs is mounted).  For example:

    install snd-pcm /sbin/modprobe --ignore-install snd-pcm && \
{ /sbin/modprobe --quiet snd-pcm-oss ; : ; }

The snd-pcm-oss module depends on snd-pcm.  If we can't tell that
snd-pcm is already loaded when we load snd-pcm-oss, we end up
running the entire install command again, ad infinitim.

Thanks go to Modestas Vainius for the idea and original patch.

Signed-off-by: Alan Jenkins <alan-jenkins@tuffmail.co.uk>
8 years agomodule-init-tools v3.11-rc1 v3.11-rc1
Jon Masters [Thu, 1 Oct 2009 06:29:21 +0000 (02:29 -0400)]
module-init-tools v3.11-rc1

An initial round of patches for the 3.11 release, including support for
"builtin" modules (those pre-compiled into the kernel image for which we
have sysfs entries and perform module initcalls just like loadable ones).

Signed-off-by: Jon Masters <jcm@jonmasters.org>
8 years agomodprobe: handle built-in modules (v4, this time tested...)
Michal Marek [Thu, 10 Sep 2009 14:26:34 +0000 (16:26 +0200)]
modprobe: handle built-in modules (v4, this time tested...)

The kernel installs a modules.builtin file listing all builtin
modules. Let depmod generate a modules.builtin.bin file and use
this in modprobe: If a module is not found in modules.dep or
modules.alias, check if the module is builtin and either do nothing,
or print "builtin <module>" if --show-depends was given. Trying to
remove a builtin module returns an error, as does inserting a builtin
module with --first-time.

Signed-off-by: Michal Marek <mmarek@suse.cz>
Signed-off-by: Jon Masters <jcm@jonmasters.org>
8 years agodepmod: change depfile functions to return int
Michal Marek [Thu, 10 Sep 2009 07:33:54 +0000 (09:33 +0200)]
depmod: change depfile functions to return int

If a function returns zero, the file won't be generated

Signed-off-by: Michal Marek <mmarek@suse.cz>
Signed-off-by: Jon Masters <jcm@jonmasters.org>
8 years agomodprobe: add --resolve-alias option
Thomas Bächler [Wed, 26 Aug 2009 17:12:05 +0000 (19:12 +0200)]
modprobe: add --resolve-alias option

The --resolve-alias option prints all module names that match the
alias given on the commandline and exits. If no valid alias is specified,
it does nothing.

8 years agologging: tell GCC to check calls to error() etc
Alan Jenkins [Fri, 7 Aug 2009 09:17:12 +0000 (10:17 +0100)]
logging: tell GCC to check calls to error() etc

This warns about the modinfo segfault which Ozan found.  It doesn't
find any other problems, which is good to know.  It may also help
avoid future errors.

Signed-off-by: Alan Jenkins <alan-jenkins@tuffmail.co.uk>
8 years agomodinfo: Fix segmentation fault due to the wrong parameter
Ozan Çağlayan [Fri, 7 Aug 2009 07:37:11 +0000 (10:37 +0300)]
modinfo: Fix segmentation fault due to the wrong parameter

modinfo segfaults when called with a module which is just deleted from
the filesystem without re-running depmod.

Pass filename instead of the address of it to the error() function to
fix the problem.

Tested-by: Ozan Çağlayan <ozan@pardus.org.tr>
Signed-off-by: Ozan Çağlayan <ozan@pardus.org.tr>
8 years agorelease: module-init-tools version 3.10 v3.10
Jon Masters [Thu, 16 Jul 2009 07:42:25 +0000 (03:42 -0400)]
release: module-init-tools version 3.10

8 years agotestsuite: rebuild all module data files
Jon Masters [Sat, 27 Jun 2009 08:25:21 +0000 (04:25 -0400)]
testsuite: rebuild all module data files

Rebuild all module data files using hornet (ppc64) and tonnant (x86_64).

Signed-off-by: Jon Masters <jcm@jonmasters.org>
8 years agoFrom: Michal Marek <mmarek@suse.cz>
Jon Masters [Sat, 27 Jun 2009 08:07:46 +0000 (04:07 -0400)]
From: Michal Marek <mmarek@suse.cz>

testsuite: stop testing the old style EXPORT_SYMBOL macro

The "new style" macro has been in use long enough (since 2.5.59 or so),
so stop testing the old one. The next patch will remove support for the
old macro.

The modules were rebuilt on a x86 and ppc machine, using gcc 4.3.2.

Signed-off-by: Michal Marek <mmarek@suse.cz>
8 years agotestsuite: add a Makefile to rebuild the test modules
Michal Marek [Sat, 27 Jun 2009 08:04:13 +0000 (04:04 -0400)]
testsuite: add a Makefile to rebuild the test modules

I haven't found a Makefile or script in the tree to do this, so I wrote
one.

jcm: Indeed, there was no such Makefile - these are rebuilt infrequently
     and I last time just did it by hand, but a Makefile is cleaner.

Signed-off-by: Michal Marek <mmarek@suse.cz>
Signed-off-by: Jon Masters <jcm@jonmasters.org>
8 years agotestsuite: add option to only test a given endianess / bitness
Michal Marek [Sat, 27 Jun 2009 08:02:22 +0000 (04:02 -0400)]
testsuite: add option to only test a given endianess / bitness

To make it easier to test changes to the testsuite without a
cross-compiler, add environment variables TEST_ENDIAN and TEST_BITS
controlling which environment / bitness will be tested. All test run in
all four modes.

jcm: removed bad options handling test since it's no longer in testsuite.

Signed-off-by: Michal Marek <mmarek@suse.cz>
Signed-off-by: Jon Masters <jcm@jonmasters.org>
9 years agogit: ignore libmodtools.a
Jon Masters [Tue, 23 Jun 2009 08:10:19 +0000 (04:10 -0400)]
git: ignore libmodtools.a

Michal Marek pointed out that (following his previous .gitignore patch) that
we were also not ignoring the output from building the new libmodtools.a.

Signed-off-by: Jon Masters <jcm@jonmasters.org>
9 years agoAdd cscope/ctags/etags files to .gitignore
Michal Marek [Mon, 15 Jun 2009 14:08:06 +0000 (16:08 +0200)]
Add cscope/ctags/etags files to .gitignore

Signed-off-by: Michal Marek <mmarek@suse.cz>
Signed-off-by: Jon Masters <jcm@jonmasters.org>
9 years agodepmod: add ability to check symbol versions
Jon Masters [Tue, 23 Jun 2009 08:07:06 +0000 (04:07 -0400)]
depmod: add ability to check symbol versions

Add a new option -E Module.symvers to read symbol versions from a
Module.symvers files and modules and warn about mismatches if -e is
given.

Signed-off-by: Michal Marek <mmarek@suse.cz>
Signed-off-by: Jon Masters <jcm@jonmasters.org>
9 years agoelfops: kill first argument of load_dep_syms()
Michal Marek [Thu, 18 Jun 2009 14:38:55 +0000 (16:38 +0200)]
elfops: kill first argument of load_dep_syms()

The pathname is already in the elf_file struct.

Signed-off-by: Michal Marek <mmarek@suse.cz>
Signed-off-by: Jon Masters <jcm@jonmasters.org>
9 years agoelfops: clean up load_symbols()
Michal Marek [Thu, 18 Jun 2009 14:38:59 +0000 (16:38 +0200)]
elfops: clean up load_symbols()

__ksymtab_strings_gpl must have been a mistake, there has never been such
section. __ksymtab_strings is present since 2.5.59, so get rid of the
compatibility code.

Signed-off-by: Michal Marek <mmarek@suse.cz>
Signed-off-by: Jon Masters <jcm@jonmasters.org>
9 years agodoc: link depmod.d to depmod.conf also
Jon Masters [Tue, 23 Jun 2009 07:53:17 +0000 (03:53 -0400)]
doc: link depmod.d to depmod.conf also

We created a link previously from depmod.conf to depmod.d (and it has to be
done the way it is for now due to the XML utilities not handling the actual
multiple file names we specify right in the source), so let's do the same
for depmod.d documentation.

Signed-off-by: Jon Masters <jcm@jonmasters.org>
9 years agoMerge branch 'modprobe_main' of ../module_init_tools_andr345
Jon Masters [Tue, 23 Jun 2009 07:49:09 +0000 (03:49 -0400)]
Merge branch 'modprobe_main' of ../module_init_tools_andr345

9 years agoMerge branch 'modprobe_main' of git://github.com/andr345/module-init-tools into modpr...
Jon Masters [Tue, 23 Jun 2009 07:43:42 +0000 (03:43 -0400)]
Merge branch 'modprobe_main' of git://github.com/andr345/module-init-tools into modprobe_main

9 years agomodprobe: fix various simple style issues related to the option flags
Andreas Robinson [Mon, 15 Jun 2009 17:45:02 +0000 (19:45 +0200)]
modprobe: fix various simple style issues related to the option flags

Changes suggested by Alan:

* Rename ignore_inuse => ignore_loaded
* Put the flags parameter last in handle_module/insmod/rmmod/do_modprobe
  function declarations.
  (The errfn was moved too, to just before the flags.)
* Don't change more than one flag per statement,
  i.e flags |= (foo | bar); => flags |= foo; flags |= bar;

Signed-off-by: Andreas Robinson <andr345@gmail.com>
9 years agodoc: delete modprobe -w option documentation
Andreas Robinson [Mon, 15 Jun 2009 17:40:15 +0000 (19:40 +0200)]
doc: delete modprobe -w option documentation

Signed-off-by: Andreas Robinson <andr345@gmail.com>
9 years agotests: remove depmod --unknown option test
Alan Jenkins [Mon, 15 Jun 2009 08:15:28 +0000 (09:15 +0100)]
tests: remove depmod --unknown option test

depmod no longer handles unknown or malformed options itself.  The error
message is now generated by getopt, so we don't need to test for it.
It turns out that different versions of getopt can generate slightly
different error messages, so the test will do more harm than good.

Signed-off-by: Alan Jenkins <alan-jenkins@tuffmail.co.uk>
9 years agomodprobe: move modprobing from main() into separate function.
Andreas Robinson [Sat, 13 Jun 2009 13:36:25 +0000 (15:36 +0200)]
modprobe: move modprobing from main() into separate function.

Signed-off-by: Andreas Robinson <andr345@gmail.com>
9 years agomodprobe: merge option flags into a single parameter
Andreas Robinson [Sat, 13 Jun 2009 13:25:08 +0000 (15:25 +0200)]
modprobe: merge option flags into a single parameter

Also simplify how handle_module()'s return code is handled in main():
Before: if (handle_module()) failed = 1;
After: failed |= handle_module();

Signed-off-by: Andreas Robinson <andr345@gmail.com>
9 years agomodprobe: remove broken -w option
Andreas Robinson [Sat, 13 Jun 2009 13:12:13 +0000 (15:12 +0200)]
modprobe: remove broken -w option

This reverts commit 5a402b77821e76f318beffff3f544ad3c7250c21
dated 5 Sep 2007.

The call to delete_module() is unaffected by the -w option and
delete_module() (in 2.6.29) itself can not be made to block
the way that is intended.

Signed-off-by: Andreas Robinson <andr345@gmail.com>
9 years agomodprobe: rename some option variables
Andreas Robinson [Sat, 13 Jun 2009 13:07:06 +0000 (15:07 +0200)]
modprobe: rename some option variables

ignore_proc => ignore_inuse
optstring => cmdline_opts
config => configname
dump_only => dump_config
modulearg => modname

Signed-off-by: Andreas Robinson <andr345@gmail.com>
9 years agotest-depmod: Fix error message mismatch
Andreas Robinson [Sat, 13 Jun 2009 12:56:47 +0000 (14:56 +0200)]
test-depmod: Fix error message mismatch

Did a glibc version change or something cause this?

9 years agomodprobe: trivial code reorganization
Andreas Robinson [Sat, 13 Jun 2009 12:41:42 +0000 (14:41 +0200)]
modprobe: trivial code reorganization

Move do_command, insmod and rmmod closer to handle_module.

Signed-off-by: Andreas Robinson <andr345@gmail.com>
9 years agomodindex: simplify option handling
Alan Jenkins [Thu, 11 Jun 2009 15:20:39 +0000 (16:20 +0100)]
modindex: simplify option handling

Signed-off-by: Alan Jenkins <alan-jenkins@tuffmail.co.uk>
9 years agodoc: modprobe --dumpversions needs a full filename, as opposed to a module name
Alan Jenkins [Thu, 11 Jun 2009 13:11:12 +0000 (14:11 +0100)]
doc: modprobe --dumpversions needs a full filename, as opposed to a module name

Signed-off-by: Alan Jenkins <alan-jenkins@tuffmail.co.uk>
9 years agodepmod: simplify option error handling
Alan Jenkins [Thu, 11 Jun 2009 14:43:48 +0000 (15:43 +0100)]
depmod: simplify option error handling

Backcompat is removed, so we can exit immediately if we don't recognise
an option.

Signed-off-by: Alan Jenkins <alan-jenkins@tuffmail.co.uk>
9 years agomodprobe: --remove requires at least one module name
Alan Jenkins [Thu, 11 Jun 2009 14:08:58 +0000 (15:08 +0100)]
modprobe: --remove requires at least one module name

This makes it consistent with --all.

Signed-off-by: Alan Jenkins <alan-jenkins@tuffmail.co.uk>