Kernel Symbols Versioning (Cont.) In kernel 2.2.5-15, for example, the 'printk' symbol is translated into 'printk_R1b7d4074'. This is done by taking the original symbol, adding '_R' followed by a CRC of the symbol's declaration. For a function, the CRC is computed over the function's name, its argument types, and its return value type. If we try to load a module containing a 'printk' function, that was compiled using a kernel with a different 'printk' declaration, there will be a symbol mismatch during the module's loading. We could always re-compile the module using a current kernel, and then the compiler will "shout" if the function prototype has changed.