diff options
Diffstat (limited to 'include')
| -rw-r--r-- | include/linux/kprobes.h | 15 | 
1 files changed, 15 insertions, 0 deletions
| diff --git a/include/linux/kprobes.h b/include/linux/kprobes.h index 594265bfd390..13fc58a74c04 100644 --- a/include/linux/kprobes.h +++ b/include/linux/kprobes.h @@ -242,6 +242,7 @@ struct kprobe_insn_cache {  	struct mutex mutex;  	void *(*alloc)(void);	/* allocate insn page */  	void (*free)(void *);	/* free insn page */ +	const char *sym;	/* symbol for insn pages */  	struct list_head pages; /* list of kprobe_insn_page */  	size_t insn_size;	/* size of instruction slot */  	int nr_garbage; @@ -272,6 +273,10 @@ static inline bool is_kprobe_##__name##_slot(unsigned long addr)	\  {									\  	return __is_insn_slot_addr(&kprobe_##__name##_slots, addr);	\  } +#define KPROBE_INSN_PAGE_SYM		"kprobe_insn_page" +#define KPROBE_OPTINSN_PAGE_SYM		"kprobe_optinsn_page" +int kprobe_cache_get_kallsym(struct kprobe_insn_cache *c, unsigned int *symnum, +			     unsigned long *value, char *type, char *sym);  #else /* __ARCH_WANT_KPROBES_INSN_SLOT */  #define DEFINE_INSN_CACHE_OPS(__name)					\  static inline bool is_kprobe_##__name##_slot(unsigned long addr)	\ @@ -373,6 +378,11 @@ void dump_kprobe(struct kprobe *kp);  void *alloc_insn_page(void);  void free_insn_page(void *page); +int kprobe_get_kallsym(unsigned int symnum, unsigned long *value, char *type, +		       char *sym); + +int arch_kprobe_get_kallsym(unsigned int *symnum, unsigned long *value, +			    char *type, char *sym);  #else /* !CONFIG_KPROBES: */  static inline int kprobes_built_in(void) @@ -435,6 +445,11 @@ static inline bool within_kprobe_blacklist(unsigned long addr)  {  	return true;  } +static inline int kprobe_get_kallsym(unsigned int symnum, unsigned long *value, +				     char *type, char *sym) +{ +	return -ERANGE; +}  #endif /* CONFIG_KPROBES */  static inline int disable_kretprobe(struct kretprobe *rp)  { |