>> Doesn't look serious. init_module() is not __init, but it calls
>> some __init functions and touches some __initdata.
>
>This is the typical case with inconsistent tagging.
>
Worse yet, I once experienced a double-definition error, that is, I had
__init int init_module(void) {
/* module1 */
}
and, in another .c file,
__init int init_module(void) {
/* module2 */
}
and making them both CONFIG_...=y gave a typical double-definition link
time error in vmlinux. The proper way (IMO) is
static __init int blah_init(void) { ... }
module_init(blah_init);
Then it does not even matter if blah_init is defined in two different
modules.
>>
>> -int init_module(void)
>> +int __init init_module(void)
>> {
>> int this_dev, found = 0;
>
>When you anyway touches the driver I suggest to name the function
><module>_init, <module>_cleanup and use module_init(), module_cleanup().
Jan Engelhardt
--
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[Index of Archives]
[Kernel Newbies]
[Netfilter]
[Bugtraq]
[Photo]
[Stuff]
[Gimp]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux Security]
[Linux RAID]
[Video 4 Linux]
[Linux for the blind]
[Linux Resources]