This is the mail archive of the
systemtap@sources.redhat.com
mailing list for the systemtap project.
Re: Hitachi djprobe mechanism
- From: Karim Yaghmour <karim at opersys dot com>
- To: "Keshavamurthy, Anil S" <anil dot s dot keshavamurthy at intel dot com>
- Cc: Masami Hiramatsu <hiramatu at sdl dot hitachi dot co dot jp>, Roland McGrath <roland at redhat dot com>, Richard J Moore <richardj_moore at uk dot ibm dot com>, SystemTAP <systemtap at sources dot redhat dot com>, sugita at sdl dot hitachi dot co dot jp, Satoshi Oshima <soshima at redhat dot com>
- Date: Wed, 27 Jul 2005 21:44:53 -0400
- Subject: Re: Hitachi djprobe mechanism
- Organization: Opersys inc.
- References: <44BDAFB888F59F408FAE3CC35AB4704101E506F6@orsmsx409>
- Reply-to: karim at opersys dot com
Keshavamurthy, Anil S wrote:
> I think that overwriting just a single-instruction
> is always hazard-free and should be followed in djprobe.
> The paper clearly explains how to achieve this using what
> is known as springboard technique.
>From the article's text:
"The springboard approach requires chunks of scratch space (collectively,
the springboard heap) to be conveniently sprinkled throughout the kernel,
so that every kernel instruction can reach some chunk when using one of
the suitable instructions ..."
The text goes on to explain that kerninst hijacks the loadable module
functionality and uses the initialization/finalization functions' address
space to achieve its goals. However, the article kind of glosses over the
implications of this. This seems like a very racy thing to do, and
certainly makes the loading/unloading process kind of problematic. Not
to mention that it won't work with kernels that have no modules to
start with, or for which the only modules loaded are used at boot time to
mount the rootfs.
So unless there's some other way to create/obtain a sprinboard heap,
this too seems limited.
Karim
--
Author, Speaker, Developer, Consultant
Pushing Embedded and Real-Time Linux Systems Beyond the Limits
http://www.opersys.com || karim@opersys.com || 1-866-677-4546