Search code examples
linux-kernelsystem-callsbpfkprobeebpf

ebpf: intercepting function calls


I am reading about kprobes BPF program type, and am wondering if it is possible to not just intercept a function call for tracing purposes or collect some low-level information (registers, stack etc.), but substitute a call and execute instead of the actual function?

Does kprobe provide this capability or I'm looking at the wrong tool?


Solution

  • No, kprobes BPF programs have only read access to the syscall parameters and return value, they cannot modify registers and therefore cannot intercept function calls. This is a limitation imposed by the BPF verifier.

    Kernel modules, however, can intercept function calls using kprobes.