diff --git a/Documentation/kprobes.txt b/Documentation/kprobes.txt index 13d8efdb9718..10f4499e677c 100644 --- a/Documentation/kprobes.txt +++ b/Documentation/kprobes.txt @@ -83,22 +83,22 @@ Execution then continues with the instruction following the probepoint. Changing Execution Path ----------------------- -Since the kprobes can probe into a running kernel code, it can change -the register set, including instruction pointer. This operation -requires maximum attention, such as keeping the stack frame, recovering -execution path etc. Since it is operated on running kernel and need deep -knowladge of the archtecture and concurrent computing, you can easily -shot your foot. +Since kprobes can probe into a running kernel code, it can change the +register set, including instruction pointer. This operation requires +maximum care, such as keeping the stack frame, recovering the execution +path etc. Since it operates on a running kernel and needs deep knowledge +of computer architecture and concurrent computing, you can easily shoot +your foot. If you change the instruction pointer (and set up other related -registers) in pre_handler, you must return !0 so that the kprobes -stops single stepping and just returns to given address. +registers) in pre_handler, you must return !0 so that kprobes stops +single stepping and just returns to the given address. This also means post_handler should not be called anymore. -Note that this operation may be harder on some architectures which -use TOC (Table of Contents) for function call, since you have to -setup new TOC for your function in your module, and recover old -one after back from it. +Note that this operation may be harder on some architectures which use +TOC (Table of Contents) for function call, since you have to setup a new +TOC for your function in your module, and recover the old one after +returning from it. Return Probes -------------