Merge branch 'perf-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull more perf updates from Ingo Molnar:
"A second round of perf updates:
- wide reaching kprobes sanitization and robustization, with the hope
of fixing all 'probe this function crashes the kernel' bugs, by
Masami Hiramatsu.
- uprobes updates from Oleg Nesterov: tmpfs support, corner case
fixes and robustization work.
- perf tooling updates and fixes from Jiri Olsa, Namhyung Ki, Arnaldo
et al:
* Add support to accumulate hist periods (Namhyung Kim)
* various fixes, refactorings and enhancements"
* 'perf-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (101 commits)
perf: Differentiate exec() and non-exec() comm events
perf: Fix perf_event_comm() vs. exec() assumption
uprobes/x86: Rename arch_uprobe->def to ->defparam, minor comment updates
perf/documentation: Add description for conditional branch filter
perf/x86: Add conditional branch filtering support
perf/tool: Add conditional branch filter 'cond' to perf record
perf: Add new conditional branch filter 'PERF_SAMPLE_BRANCH_COND'
uprobes: Teach copy_insn() to support tmpfs
uprobes: Shift ->readpage check from __copy_insn() to uprobe_register()
perf/x86: Use common PMU interrupt disabled code
perf/ARM: Use common PMU interrupt disabled code
perf: Disable sampled events if no PMU interrupt
perf: Fix use after free in perf_remove_from_context()
perf tools: Fix 'make help' message error
perf record: Fix poll return value propagation
perf tools: Move elide bool into perf_hpp_fmt struct
perf tools: Remove elide setup for SORT_MODE__MEMORY mode
perf tools: Fix "==" into "=" in ui_browser__warning assignment
perf tools: Allow overriding sysfs and proc finding with env var
perf tools: Consider header files outside perf directory in tags target
...
This commit is contained in:
@@ -205,10 +205,10 @@ struct kretprobe_blackpoint {
|
||||
void *addr;
|
||||
};
|
||||
|
||||
struct kprobe_blackpoint {
|
||||
const char *name;
|
||||
struct kprobe_blacklist_entry {
|
||||
struct list_head list;
|
||||
unsigned long start_addr;
|
||||
unsigned long range;
|
||||
unsigned long end_addr;
|
||||
};
|
||||
|
||||
#ifdef CONFIG_KPROBES
|
||||
@@ -265,6 +265,7 @@ extern void arch_disarm_kprobe(struct kprobe *p);
|
||||
extern int arch_init_kprobes(void);
|
||||
extern void show_registers(struct pt_regs *regs);
|
||||
extern void kprobes_inc_nmissed_count(struct kprobe *p);
|
||||
extern bool arch_within_kprobe_blacklist(unsigned long addr);
|
||||
|
||||
struct kprobe_insn_cache {
|
||||
struct mutex mutex;
|
||||
@@ -476,4 +477,18 @@ static inline int enable_jprobe(struct jprobe *jp)
|
||||
return enable_kprobe(&jp->kp);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_KPROBES
|
||||
/*
|
||||
* Blacklist ganerating macro. Specify functions which is not probed
|
||||
* by using this macro.
|
||||
*/
|
||||
#define __NOKPROBE_SYMBOL(fname) \
|
||||
static unsigned long __used \
|
||||
__attribute__((section("_kprobe_blacklist"))) \
|
||||
_kbl_addr_##fname = (unsigned long)fname;
|
||||
#define NOKPROBE_SYMBOL(fname) __NOKPROBE_SYMBOL(fname)
|
||||
#else
|
||||
#define NOKPROBE_SYMBOL(fname)
|
||||
#endif
|
||||
|
||||
#endif /* _LINUX_KPROBES_H */
|
||||
|
||||
Reference in New Issue
Block a user