Kprobe может быть помещен в любую инструкцию , а не только в начале функции ядра (если, конечно, kprobes разрешено в данном коде ядра).Обработчики kprobe запускаются до и после инструкции.
Kretprobes имеет смысл только для проверки входов и выходов функций.Обработчики kretprobe запускаются при входе в функцию и при ее выходе, а не до и после какой-либо инструкции, как это делают обработчики kprobe.
Кроме того, если вам не нужно запускать свой код в функциидля выхода, kprobes может быть лучшим выбором, чем kretprobes, для проверки функций (хотя Ftrace может быть даже лучше).Kretprobes вмешивается с адресом возврата функции в стеке для выполнения обработчика.Если функция дает сбой или выдает обратную трассировку по какой-либо другой причине, она может содержать адреса внутренних компонентов kretprobe, а не реальные адреса возврата, что может сбивать с толку.
https://www.kernel.org/doc/Documentation/kprobes.txt