pre-compiled modules

Hien Nguyen hien@us.ibm.com
Mon Jun 19 16:48:00 GMT 2006


How about save the meta data (stap compile options, kernel version, 
location for .ko etc...) at compile time then load the pre-compiled 
module via 'stap metadata.file'

Hien.

Frank Ch. Eigler wrote:
> Hi -
>
> dsmith wrote:
>
>   
>> I've been looking at pre-compiled modules, and in general they should
>> work.  I do have a few questions:
>>
>> 1) One thing I've been worried about is differing options between
>> compile time and run time.  I believe that most of them should be OK,
>> with the exception of the '-b' relayfs option.  If it was specified at
>> compile time and not at run time (or vice versa), I'm not sure what will
>> happen (since that flag appears to change behavior both at compile time
>> and run time).
>>
>> Got any ideas here on how to prevent this?
>>     
>
> One possibility would be to remove the run-time meaning of -b: don't
> pass it to stpd any more.  Perhaps the value could flow by/within the
> module to the runtime to stpd at run time.  Perhaps the
> stp_check/mount check could be deferred until late in the module
> initialization sequence.  Martin?
>
>
>   
>> 2) Pre-compiled systemtap modules work, but there are a couple of things
>> we could/should theoretically check for:
>>
>> 2a) Correct kernel version.  Right now there is nothing to prevent a
>> user from compiling a systemtap script into a module against kernel X,
>> rebooting his system, then trying to run the module against kernel Y.
>>
>> From what I've been looking at, there really isn't a good way to check
>> this, except for calling "modprobe --dry-run".
>>
>> Do you know of a better way?  Do you think this check is necessary?
>>     
>
> Blatant modversions mismatches will be detected during the actual
> insertion attempt - IMO there is no need to make a dry run first.  We
> will need more self-protective code though for purposes of verifying
> module addresses.  Specifically, we need to find a kernel API routine
> that, given a module name, gives its loaded base address.
>
>
>   
>> 2b) Actually a systemtap module.  Currently there is nothing preventing
>> a user from telling systemtap to run a pre-compiled module that is a
>> valid kernel module, but isn't a systemtap module.  I'm unsure of what
>> might happen here.
>>
>> A way to check for this would to somehow check for the existence of a
>> systemtap specific symbol, such as systemtap_module_init, before running
>> the module.
>>
>> Got any ideas on a good way of doing that?  Is it necessary?
>>     
>
> At this point, only a privileged user can run stap, so the risks are
> already unlimited in a sense, though mitigated by the fact that
> harmful loadable .ko's are rarely found lying idly around.
>
>
> - FChE
>   



More information about the Systemtap mailing list