Hello everyone,
As far as I understand (which is not very far), if I define
CONFIG_MODVERSIONS, then checksums for various functions (all exported
functions?) and various structures (which ones?) will be included inside
the kernel image, and written to Module.symvers. When an out-of-tree
module is built, it will *also* include these checksums.
How do I list ALL the checksums within a module?
$ /sbin/modinfo -V
module-init-tools version 3.2.2
$ uname -a
Linux venus 2.6.18.6 #1 PREEMPT Thu Feb 8 18:04:49 CET 2007 i686
pentium4 i386 GNU/Linux
$ /sbin/modinfo test.ko
filename: test.ko
vermagic: 2.6.20.7-rt8 preempt mod_unload PENTIUMIII REGPARM
depends:
parm: pConfig_file:charp
parm: allocator_himem:An integer (int)
parm: EnableIdleMode:An integer (int)
parm: Board_ID:An integer (int)
parm: Diagnostic:An integer (int)
$ hexdump -C test.ko | grep -A2 struct_
000752e0 17 98 07 0e 73 74 72 75 63 74 5f 6d 6f 64 75 6c
|....struct_modul|
000752f0 65 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|e...............|
00075300 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|................|
I think this means that, in this module, the checksum for symbol
struct_module is 0x1798070e, right?
Is there a simpler way to list all the checksums?
Regards.
On Tue, 2007-06-19 at 13:59 +0200, John Sigler wrote:
> Hello everyone,
>
> As far as I understand (which is not very far), if I define
> CONFIG_MODVERSIONS,
just don't enable modversions.. it doesn't provide you any real safety
at all..... and it makes your build a LOT slower.
Arjan van de Ven wrote:
> On Tue, 2007-06-19 at 13:59 +0200, John Sigler wrote:
>
>> As far as I understand (which is not very far), if I define
>> CONFIG_MODVERSIONS,
>
> just don't enable modversions.. it doesn't provide you any real safety
> at all..... and it makes your build a LOT slower.
I'm confused. What is the consensus on MODVERSIONS around here?
How many people share your views?
I was under the impression MODVERSIONS was a good thing(TM).
If I don't enable CONFIG_MODVERSIONS, then I'll have to recompile my
out-of-tree modules every time I upgrade the kernel, even if I'm just
upgrading from 2.6.20.7 to 2.6.20.8, unless I force the insertion.
I also have a few binary modules. If I force the insertion, I won't know
they have become binary incompatible until they blow up later, or,
worse, lead to silent corruption.
Please correct any and all misconceptions.
Regards.