diff options
author | Greg Kroah-Hartman <gregkh@suse.de> | 2008-01-27 10:29:20 -0800 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2008-01-27 15:01:39 -0800 |
commit | 123ca9575b1f5342c05a4b84d6af8ba7587c2981 (patch) | |
tree | 3d058bc01640913d44d819d0a582d2e7cba82978 /kernel | |
parent | 404aae5d420ec543e2e8434f7ec0edf5e2d2b0c4 (diff) | |
download | blackbird-op-linux-123ca9575b1f5342c05a4b84d6af8ba7587c2981.tar.gz blackbird-op-linux-123ca9575b1f5342c05a4b84d6af8ba7587c2981.zip |
Module: check to see if we have a built in module with the same name
When trying to load a module with the same name as a built-in one, a
scary kobject backtrace comes up. Prevent that from checking for this
condition and warning the user as to what exactly is going on.
Cc: Rusty Russell <rusty@rustcorp.com.au>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/module.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/kernel/module.c b/kernel/module.c index 1bb4c5e0d56e..76ddc85a423a 100644 --- a/kernel/module.c +++ b/kernel/module.c @@ -1214,6 +1214,7 @@ void module_remove_modinfo_attrs(struct module *mod) int mod_sysfs_init(struct module *mod) { int err; + struct kobject *kobj; if (!module_sysfs_initialized) { printk(KERN_ERR "%s: module sysfs not initialized\n", @@ -1221,6 +1222,15 @@ int mod_sysfs_init(struct module *mod) err = -EINVAL; goto out; } + + kobj = kset_find_obj(module_kset, mod->name); + if (kobj) { + printk(KERN_ERR "%s: module is already loaded\n", mod->name); + kobject_put(kobj); + err = -EINVAL; + goto out; + } + mod->mkobj.mod = mod; memset(&mod->mkobj.kobj, 0, sizeof(mod->mkobj.kobj)); |