Instrumentation is forbidden in the .noinstr.text section. Make kprobes respect this. This lacks support for .noinstr.text sections in modules, which is required to handle VMX and SVM. Signed-off-by: Thomas Gleixner <tglx@xxxxxxxxxxxxx> --- kernel/kprobes.c | 11 +++++++++++ 1 file changed, 11 insertions(+) --- a/kernel/kprobes.c +++ b/kernel/kprobes.c @@ -1443,10 +1443,21 @@ static bool __within_kprobe_blacklist(un return false; } +/* Functions in .noinstr.text must not be probed */ +static bool within_noinstr_text(unsigned long addr) +{ + /* FIXME: Handle module .noinstr.text */ + return addr >= (unsigned long)__noinstr_text_start && + addr < (unsigned long)__noinstr_text_end; +} + bool within_kprobe_blacklist(unsigned long addr) { char symname[KSYM_NAME_LEN], *p; + if (within_noinstr_text(addr)) + return true; + if (__within_kprobe_blacklist(addr)) return true;