[Bug 213315] MODULE_DEPENDs are satisfied by modules that fail MOD_LOAD

bugzilla-noreply at freebsd.org bugzilla-noreply at freebsd.org
Sat Oct 8 20:41:02 UTC 2016


https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=213315

            Bug ID: 213315
           Summary: MODULE_DEPENDs are satisfied by modules that fail
                    MOD_LOAD
           Product: Base System
           Version: CURRENT
          Hardware: Any
                OS: Any
            Status: New
          Severity: Affects Only Me
          Priority: ---
         Component: kern
          Assignee: freebsd-bugs at FreeBSD.org
          Reporter: cem at freebsd.org

This seems undesirable.

Consider a kernel object (KO1) that contains two modules, A and B.  If MOD_LOAD
succeeds for A and fails for B, KO1 is kept loaded and both A and B appear on
kern_linker.c's `found_modules` list.

Because B failed to load, only A appears on kern_module.c's `modules` list.

After this, a second kernel object (KO2) that contains a module C is loaded.  C
has a MODULE_DEPEND on B.  Because B is still on `found_modules`, C is allowed
to load.  It may fail to probe or panic if it assumes B is actually present.

Maybe that's not the promise MODULE_DEPEND makes.  But it would be nice if it
was.

The common case of one module per ko is already handled by the runtime loader
(and proposed patch to do the same in the preload linker is on phabricator:
https://reviews.freebsd.org/D8200 ).  (If the linker detects that all modules
in a KO failed to MOD_LOAD, the entire KO is unloaded.)

Fixing this just for runtime module loading maybe isn't too hard.  Load one
module at a time and only put successful modules (already maintained in
lf->modules) on the `found_modules` global list.

Solving this generally for preloaded kernel objects is more difficult, at least
without changing how preloaded KO sysinits are run.  I'm not sure changing that
is a real problem, though.

-- 
You are receiving this mail because:
You are the assignee for the bug.


More information about the freebsd-bugs mailing list