On a 2.6.7 kernel, when I try to modprobe ipmi_msghandler, it fails to load
with following message:
FATAL: Error inserting ipmi_msghandler (/lib/modules/2.6.7/kernel/drivers/char/ipmi/ipmi_msghandler.ko): Invalid module format
And there is an error message in dmesg:
ipmi_msghandler: init symbol 0xa000000200058080 used in module code at
a000000200031b32
What I have been able to determine is that ipmi_msghandler.c defines
ipmi_init_msghandler() as the module_init() routine and then it also calls
ipmi_init_msghandler() diretcly from couple of other places. This does not
seem to be okay in 2.6.7 kernel. I was able to fix this by defining a new
module_init routine which in turn calls ipmi_init_msghandler(). I also
removed __init from ipmi_init_msghandler() since it gets called from
ipmi_open() on an open of the ipmi device file. So I would think we want
to keep ipmi_init_msghandler() around even after initialization.
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
200 /* priority: INT_MAX >= x >= 0 */
};
-static __init int ipmi_init_msghandler(void)
+static int ipmi_init_msghandler(void)
{
int i;
return 0;
}
+static __init int ipmi_init_msghandler_mod(void)
+{
+ ipmi_init_msghandler();
+ return 0;
+}
+
static __exit void cleanup_ipmi(void)
{
int count;
}
module_exit(cleanup_ipmi);
-module_init(ipmi_init_msghandler);
+module_init(ipmi_init_msghandler_mod);
MODULE_LICENSE("GPL");
EXPORT_SYMBOL(ipmi_alloc_recv_msg);