[PATCH] kprobes: fix single-step out of line

Ananth N Mavinakayanahalli ananth at in.ibm.com
Fri Jun 10 22:05:55 EST 2005


On Fri, Jun 10, 2005 at 11:41:30AM +1000, Paul Mackerras wrote:
> Ananth N Mavinakayanahalli writes:

Hi Paul,

> > On Power4 and above, single-step out of line when the instruction copy
> > is on a kmalloc'ed memory area, fails with an Instruction Access
> > exception. Here is a patch that fixes it.
> 
> > +static kprobe_opcode_t stepped_insn;
> 
> Hmmm... you are putting the instruction in a location in the data
> segment, which may not be mapped executable.  You would get away with
> it if the kernel is mapped with large pages (which is the default) and
> the kernel text + data fits into 16MB (which I hope would be the
> case).  But still, it's not a really clean solution.  However, I'm not
> sure what would be better; you need some storage that is both writable
> and executable, which we try to avoid having.

One option could be to __vmalloc() a page with pgprot = PAGE_KERNEL_EXEC 
and use that as a scratch area for stepping probed instructions - similar 
to what x86_64 kprobes does currently (though it uses module_alloc() to 
handle some special (RIP-relative) instructions).

Suggestions?

Ananth



More information about the Linuxppc64-dev mailing list