2007-06-19 12:00:20

by John Sigler

[permalink] [raw]
Subject: Dumping the checksums in a module

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.


2007-06-19 13:21:19

by Arjan van de Ven

[permalink] [raw]
Subject: Re: Dumping the checksums in a module

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.


2007-06-19 14:40:54

by John Sigler

[permalink] [raw]
Subject: Re: Dumping the checksums in a module

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.