[Bug 627] modprobe-small: incorrect alias-based probe with dep_bb_fd < 0

bugzilla at busybox.net bugzilla at busybox.net
Wed Aug 11 15:22:05 UTC 2010


https://bugs.busybox.net/show_bug.cgi?id=627

--- Comment #20 from Denys Vlasenko <vda.linux at googlemail.com>  ---
Well, the solution needed here is to closely follow module-init-tools.

There is a comment in modprobe_small.c about the exact nature
of the problem:

/*
 * Given modules definition and module name (or alias, or symbol)
 * load/remove the module respecting dependencies.
 * NB: also called by depmod with bogus name "/",
 * just in order to force modprobe.dep.bb creation.
*/
static void process_module(char *name, const char *cmdline_options)
{
        module_info *info;
...
...

        if (!module_count) {
                /* Scan module directory. This is done only once.
                 * It will attempt module load, and will exit(EXIT_SUCCESS)
                 * on success. */
...
                dbg1_error_msg("dirscan complete");
                /* Module was not found, or load failed, or is_rmmod */
                if (module_found_idx >= 0) { /* module was found */
                        info = &modinfo[module_found_idx];
                } else { /* search for alias, not a plain module name */
                        info = find_alias(name);
                }
        } else {
                info = find_alias(name);
        }

// Problem here: there can be more than one module
// for the given alias. For example,
// "pci:v00008086d00007010sv00000000sd00000000bc01sc01i80" matches
// ata_piix because it has an alias "pci:v00008086d00007010sv*sd*bc*sc*i*"
// and ata_generic, it has an alias "alias=pci:v*d*sv*sd*bc01sc01i*"
// Standard modprobe would load them both.
// In this code, find_alias() returns only the first matching module.


That's where the problem is: find_alias() returns one module_info;
but in order to mimic module-init-tools, it needs to return
*a list* of matching module_info's.

-- 
Configure bugmail: https://bugs.busybox.net/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.


More information about the busybox-cvs mailing list