Bug 5270

Summary: modpost warnings with runtime/uprobes
Product: systemtap Reporter: Jim Keniston <jkenisto>
Component: uprobesAssignee: Unassigned <systemtap>
Severity: normal    
Priority: P1    
Version: unspecified   
Target Milestone: ---   
Host: Target:
Build: Last reconfirmed:

Description Jim Keniston 2007-11-05 20:02:13 UTC
When a stap script uses uprobes.ko as built on the fly from source in
runtime/uprobes, we can get modpost warnings from stap -vv and a tainted
kernel.  (However, the stap-generated module loads and runs fine
with the stap-built uprobes.ko.)

The modpost warnings look like this:
WARNING: "register_uprobe"
[/tmp/stap739yV3/stap_c07123156fc06731cd751ecff0100ad4_651.ko] undefined!
WARNING: "register_uretprobe"
[/tmp/stap739yV3/stap_c07123156fc06731cd751ecff0100ad4_651.ko] undefined!
WARNING: "unregister_uprobe"
[/tmp/stap739yV3/stap_c07123156fc06731cd751ecff0100ad4_651.ko] undefined!
WARNING: "unregister_uretprobe"
[/tmp/stap739yV3/stap_c07123156fc06731cd751ecff0100ad4_651.ko] undefined!

They result from a modpost command that looks like this, during the build of
the stap-generated probe module:
scripts/mod/modpost -m  -i /xxx/Module.symvers -I /tmp/stap739yV3/Module.symvers
-o /tmp/stap739yV3/Module.symvers -w -s
where /xxx is apparently /lib/modules/`uname -r`/build.

I think if the -I option pointed at Module.symvers in the directory where
uprobes.ko lives, we'd be OK.  I haven't figured out how to make that happen,

This is the sort of "tainted" message that shows up in /var/log/messages
when the stap-generated probe module is inserted:
Nov  5 12:33:35 myhost kernel: stap_c07123156fc06731cd751ecff0100ad4_651: no
version for "unregister_uretprobe" found: kernel tainted.
Comment 1 Jim Keniston 2007-11-05 21:09:20 UTC
I forgot to mention...  We'd also have to move step 4.5 (uprobes.ko
build) ahead of step 4 (compilation of the probe module).
Comment 2 Jim Keniston 2007-11-13 22:22:02 UTC
Checked in fix today.

To test: On a system where the kernel provides the exports needed by uprobes,
but uprobes is not part of the kernel build (neither built-in nor a module), run
a stap script that uses uprobes (see, e.g., bz5079 or bz5083).  Verify that the
"tainted" message isn't reported to /var/log/messages, and stap -vv doesn't
report the indicated warnings.