|
@@ -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
|
|
|
-------------
|