[patch V3 04/23] kprobes: Prevent probes in .noinstr.text section

From: Thomas Gleixner
Date: Fri Mar 20 2020 - 14:39:17 EST


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;