instrumenting vs. module loading

Ananth N Mavinakayanahalli amavin@redhat.com
Fri May 13 15:24:00 GMT 2005


Lynch, Rusty wrote:
>>Ananth N Mavinakayanahalli wrote:
>>
>>>Ananth N Mavinakayanahalli wrote:
>>>
>>>
>>>>Frank Ch. Eigler wrote:
>>>>
>>>>I don't have much idea about in kernel details of module loading and
>>>>unloading, but I'd imagine we'll encounter "interesting" issues if a
>>>>different module is loaded in the same text range with such a stray
>>>>kprobe.
>>>
>>>
>>>On more thought, we won't see any such issues - we won't have the
>>>breakpoint hit at all - the whole text gets overlaid right?
>>>
>>>Doh! what was I thinking earlier.. need more coffee :-)
>>>
>>>Ananth
>>>
>>>
>>>
>>
>>All is fine until the clean up code tries to unregister the kprobe and
>>it scribbles over that location in memory which no longer has the
>>breakpoint.
>>
>>-will
> 
> 
> Or... the same memory is used to load a new module, and we end up
> replacing an instruction with the old original instruction.  Can you
> imagine if that didn't trigger a crash, but just some very subtle bug.
> 
> I think this could be solved in the unregistration.
> 

Yeah.. something like:

if (*addr != BREAKPOINT_INSTRUCTION)
	/* just unlink the kprobe from hlist */

should do the trick.

I know systemtap scripts would probably handle it at a higher layer, but
we'd need this test anyway to protect ourselves from a joe-user with bad
intentions.

Ananth



More information about the Systemtap mailing list