You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
Kprobes: indicate kretprobe support in Kconfig
Add CONFIG_HAVE_KRETPROBES to the arch/<arch>/Kconfig file for relevant architectures with kprobes support. This facilitates easy handling of in-kernel modules (like samples/kprobes/kretprobe_example.c) that depend on kretprobes being present in the kernel. Thanks to Sam Ravnborg for helping make the patch more lean. Per Mathieu's suggestion, added CONFIG_KRETPROBES and fixed up dependencies. Signed-off-by: Ananth N Mavinakayanahalli <ananth@in.ibm.com> Acked-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca> Acked-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
committed by
Linus Torvalds
parent
8182ec49a7
commit
9edddaa200
@@ -20,7 +20,6 @@
|
||||
#include <linux/ptrace.h>
|
||||
#include <linux/percpu.h>
|
||||
|
||||
#define ARCH_SUPPORTS_KRETPROBES
|
||||
#define __ARCH_WANT_KPROBES_INSN_SLOT
|
||||
#define MAX_INSN_SIZE 2
|
||||
#define MAX_STACK_SIZE 64 /* 32 would probably be OK */
|
||||
|
||||
@@ -82,7 +82,6 @@ struct kprobe_ctlblk {
|
||||
struct prev_kprobe prev_kprobe[ARCH_PREV_KPROBE_SZ];
|
||||
};
|
||||
|
||||
#define ARCH_SUPPORTS_KRETPROBES
|
||||
#define kretprobe_blacklist_size 0
|
||||
|
||||
#define SLOT0_OPCODE_SHIFT (37)
|
||||
|
||||
@@ -80,7 +80,6 @@ typedef unsigned int kprobe_opcode_t;
|
||||
#define is_trap(instr) (IS_TW(instr) || IS_TWI(instr))
|
||||
#endif
|
||||
|
||||
#define ARCH_SUPPORTS_KRETPROBES
|
||||
#define flush_insn_slot(p) do { } while (0)
|
||||
#define kretprobe_blacklist_size 0
|
||||
|
||||
|
||||
@@ -46,7 +46,6 @@ typedef u16 kprobe_opcode_t;
|
||||
? (MAX_STACK_SIZE) \
|
||||
: (((unsigned long)current_thread_info()) + THREAD_SIZE - (ADDR)))
|
||||
|
||||
#define ARCH_SUPPORTS_KRETPROBES
|
||||
#define kretprobe_blacklist_size 0
|
||||
|
||||
#define KPROBE_SWAP_INST 0x10
|
||||
|
||||
@@ -14,8 +14,6 @@ typedef u32 kprobe_opcode_t;
|
||||
|
||||
#define arch_remove_kprobe(p) do {} while (0)
|
||||
|
||||
#define ARCH_SUPPORTS_KRETPROBES
|
||||
|
||||
#define flush_insn_slot(p) \
|
||||
do { flushi(&(p)->ainsn.insn[0]); \
|
||||
flushi(&(p)->ainsn.insn[1]); \
|
||||
|
||||
@@ -42,7 +42,6 @@ typedef u8 kprobe_opcode_t;
|
||||
: (((unsigned long)current_thread_info()) + THREAD_SIZE \
|
||||
- (unsigned long)(ADDR)))
|
||||
|
||||
#define ARCH_SUPPORTS_KRETPROBES
|
||||
#define flush_insn_slot(p) do { } while (0)
|
||||
|
||||
extern const int kretprobe_blacklist_size;
|
||||
|
||||
@@ -125,11 +125,11 @@ struct jprobe {
|
||||
DECLARE_PER_CPU(struct kprobe *, current_kprobe);
|
||||
DECLARE_PER_CPU(struct kprobe_ctlblk, kprobe_ctlblk);
|
||||
|
||||
#ifdef ARCH_SUPPORTS_KRETPROBES
|
||||
#ifdef CONFIG_KRETPROBES
|
||||
extern void arch_prepare_kretprobe(struct kretprobe_instance *ri,
|
||||
struct pt_regs *regs);
|
||||
extern int arch_trampoline_kprobe(struct kprobe *p);
|
||||
#else /* ARCH_SUPPORTS_KRETPROBES */
|
||||
#else /* CONFIG_KRETPROBES */
|
||||
static inline void arch_prepare_kretprobe(struct kretprobe *rp,
|
||||
struct pt_regs *regs)
|
||||
{
|
||||
@@ -138,7 +138,7 @@ static inline int arch_trampoline_kprobe(struct kprobe *p)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
#endif /* ARCH_SUPPORTS_KRETPROBES */
|
||||
#endif /* CONFIG_KRETPROBES */
|
||||
/*
|
||||
* Function-return probe -
|
||||
* Note:
|
||||
|
||||
Reference in New Issue
Block a user