Do you know the bug of EXPORT_SYMBOL()

Navy navych at 126.com
Fri Jul 24 01:49:42 EDT 2015


Hi
To my understanding, EXPORT_SYMBOL() is used to export a symbol in 
kernel/modules. The the address of the all sysbols is in /proc/kallsyms. 
Only symbols exported by EXPORT_SYMBOL() is listed its CRC information 
in Module.symvers. So I think the CRC is the key to export a symbol.
I do an experiment:
	
       ---mdir
           |
           |---Mod1
           |    |---mod1.c
           |    |---Makefile
           |
           |---Mod2
                |---mod2.c
                |---Makefile
		
mod1.c define function *void myfunc(void)* and exported by EXPORT_SYMBOL() 
and the CRC info is showed in Module.symvers. mod2.c reference *myfunc* and
compiled successfully. BUT when mod2.ko is insmoded, "unknown symbol" is 
complained. mod2.ko CAN'T BE INSMOD.
I solve this problem by the method in Documentation/kbuild/modules.txt and
heard this is a bug from kernel 2.6.

Why this bug is not be fixed?




More information about the Kernelnewbies mailing list