Merge tag 'core-kprobes-2020-06-01' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull kprobes updates from Ingo Molnar: "Various kprobes updates, mostly centered around cleaning up the no-instrumentation logic. Instead of the current per debug facility blacklist, use the more generic .noinstr.text approach, combined with a 'noinstr' marker for functions. Also add instrumentation_begin()/end() to better manage the exact place in entry code where instrumentation may be used. And add a kprobes blacklist for modules" * tag 'core-kprobes-2020-06-01' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: kprobes: Prevent probes in .noinstr.text section vmlinux.lds.h: Create section for protection against instrumentation samples/kprobes: Add __kprobes and NOKPROBE_SYMBOL() for handlers. kprobes: Support NOKPROBE_SYMBOL() in modules kprobes: Support __kprobes blacklist in modules kprobes: Lock kprobe_mutex while showing kprobe_blacklist
This commit is contained in:
@@ -53,6 +53,9 @@ extern char __ctors_start[], __ctors_end[];
|
||||
/* Start and end of .opd section - used for function descriptors. */
|
||||
extern char __start_opd[], __end_opd[];
|
||||
|
||||
/* Start and end of instrumentation protected text section */
|
||||
extern char __noinstr_text_start[], __noinstr_text_end[];
|
||||
|
||||
extern __visible const void __nosave_begin, __nosave_end;
|
||||
|
||||
/* Function descriptor handling (if any). Override in asm/sections.h */
|
||||
|
@@ -540,6 +540,15 @@
|
||||
. = ALIGN((align)); \
|
||||
__end_rodata = .;
|
||||
|
||||
/*
|
||||
* Non-instrumentable text section
|
||||
*/
|
||||
#define NOINSTR_TEXT \
|
||||
ALIGN_FUNCTION(); \
|
||||
__noinstr_text_start = .; \
|
||||
*(.noinstr.text) \
|
||||
__noinstr_text_end = .;
|
||||
|
||||
/*
|
||||
* .text section. Map to function alignment to avoid address changes
|
||||
* during second ld run in second ld pass when generating System.map
|
||||
@@ -551,6 +560,7 @@
|
||||
#define TEXT_TEXT \
|
||||
ALIGN_FUNCTION(); \
|
||||
*(.text.hot TEXT_MAIN .text.fixup .text.unlikely) \
|
||||
NOINSTR_TEXT \
|
||||
*(.text..refcount) \
|
||||
*(.ref.text) \
|
||||
MEM_KEEP(init.text*) \
|
||||
|
Reference in New Issue
Block a user