lkml.org 
[lkml]   [2006]   [Sep]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
Subject[RETRY] [PATCH] load_module: no BUG if module_subsys uninitialized
[I discovered after sending my previous message that Gmail helpfully
line-wrapped and de-tabified my patch. I'm resending it as an
attachment; apologies for the error.]

Invoking load_module() before param_sysfs_init() is called crashes in
mod_sysfs_setup(), since the kset in module_subsys is not initialized
yet.

Another patch for the same symptom
(module_subsys-initialize-earlier.patch) moves param_sysfs_init() to
the subsys initcalls, but this is still not early enough in the boot
process in some cases. In particular, topology_init() causes
/sbin/hotplug to run, which requests net-pf-1 (the UNIX socket
protocol) which can be compiled as a module. Moving param_sysfs_init()
to the postcore initcalls fixes this particular race, but there might
well be other cases where a usermodehelper causes a module to load
earlier still.

The patch below makes load_module() return an error rather than
crashing the kernel if invoked before module_subsys is initialized.
--- linux-2.6.17.11.orig/kernel/module.c 2006-08-23 21:16:33.000000000 +0000
+++ linux-2.6.17.11/kernel/module.c 2006-09-22 05:19:03.000000000 +0000
@@ -998,6 +998,12 @@
{
int err;

+ if (!module_subsys.kset.subsys) {
+ printk(KERN_ERR "%s: module_subsys not initialized\n",
+ mod->name);
+ err = -EINVAL;
+ goto out;
+ }
memset(&mod->mkobj.kobj, 0, sizeof(mod->mkobj.kobj));
err = kobject_set_name(&mod->mkobj.kobj, "%s", mod->name);
if (err)
\
 
 \ /
  Last update: 2006-09-22 21:51    [W:0.031 / U:0.096 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site