diff options
Diffstat (limited to 'arch')
-rw-r--r-- | arch/avr32/kernel/kprobes.c | 2 | ||||
-rw-r--r-- | arch/ia64/kernel/kprobes.c | 2 | ||||
-rw-r--r-- | arch/powerpc/kernel/kprobes.c | 2 | ||||
-rw-r--r-- | arch/s390/kernel/kprobes.c | 2 | ||||
-rw-r--r-- | arch/sparc64/kernel/kprobes.c | 2 | ||||
-rw-r--r-- | arch/x86/kernel/kprobes_32.c | 7 | ||||
-rw-r--r-- | arch/x86/kernel/kprobes_64.c | 7 | ||||
-rw-r--r-- | arch/x86/kernel/process_64.c | 2 |
8 files changed, 25 insertions, 1 deletions
diff --git a/arch/avr32/kernel/kprobes.c b/arch/avr32/kernel/kprobes.c index 4942ee662e0b..20b1c9d8f945 100644 --- a/arch/avr32/kernel/kprobes.c +++ b/arch/avr32/kernel/kprobes.c | |||
@@ -22,6 +22,8 @@ DEFINE_PER_CPU(struct kprobe *, current_kprobe); | |||
22 | static unsigned long kprobe_status; | 22 | static unsigned long kprobe_status; |
23 | static struct pt_regs jprobe_saved_regs; | 23 | static struct pt_regs jprobe_saved_regs; |
24 | 24 | ||
25 | struct kretprobe_blackpoint kretprobe_blacklist[] = {{NULL, NULL}}; | ||
26 | |||
25 | int __kprobes arch_prepare_kprobe(struct kprobe *p) | 27 | int __kprobes arch_prepare_kprobe(struct kprobe *p) |
26 | { | 28 | { |
27 | int ret = 0; | 29 | int ret = 0; |
diff --git a/arch/ia64/kernel/kprobes.c b/arch/ia64/kernel/kprobes.c index 5dc98b5abcfb..5fd65d8302c8 100644 --- a/arch/ia64/kernel/kprobes.c +++ b/arch/ia64/kernel/kprobes.c | |||
@@ -40,6 +40,8 @@ extern void jprobe_inst_return(void); | |||
40 | DEFINE_PER_CPU(struct kprobe *, current_kprobe) = NULL; | 40 | DEFINE_PER_CPU(struct kprobe *, current_kprobe) = NULL; |
41 | DEFINE_PER_CPU(struct kprobe_ctlblk, kprobe_ctlblk); | 41 | DEFINE_PER_CPU(struct kprobe_ctlblk, kprobe_ctlblk); |
42 | 42 | ||
43 | struct kretprobe_blackpoint kretprobe_blacklist[] = {{NULL, NULL}}; | ||
44 | |||
43 | enum instruction_type {A, I, M, F, B, L, X, u}; | 45 | enum instruction_type {A, I, M, F, B, L, X, u}; |
44 | static enum instruction_type bundle_encoding[32][3] = { | 46 | static enum instruction_type bundle_encoding[32][3] = { |
45 | { M, I, I }, /* 00 */ | 47 | { M, I, I }, /* 00 */ |
diff --git a/arch/powerpc/kernel/kprobes.c b/arch/powerpc/kernel/kprobes.c index 440f5a87271f..5338e4855712 100644 --- a/arch/powerpc/kernel/kprobes.c +++ b/arch/powerpc/kernel/kprobes.c | |||
@@ -38,6 +38,8 @@ | |||
38 | DEFINE_PER_CPU(struct kprobe *, current_kprobe) = NULL; | 38 | DEFINE_PER_CPU(struct kprobe *, current_kprobe) = NULL; |
39 | DEFINE_PER_CPU(struct kprobe_ctlblk, kprobe_ctlblk); | 39 | DEFINE_PER_CPU(struct kprobe_ctlblk, kprobe_ctlblk); |
40 | 40 | ||
41 | struct kretprobe_blackpoint kretprobe_blacklist[] = {{NULL, NULL}}; | ||
42 | |||
41 | int __kprobes arch_prepare_kprobe(struct kprobe *p) | 43 | int __kprobes arch_prepare_kprobe(struct kprobe *p) |
42 | { | 44 | { |
43 | int ret = 0; | 45 | int ret = 0; |
diff --git a/arch/s390/kernel/kprobes.c b/arch/s390/kernel/kprobes.c index e40373d9fbce..c5549a206284 100644 --- a/arch/s390/kernel/kprobes.c +++ b/arch/s390/kernel/kprobes.c | |||
@@ -33,6 +33,8 @@ | |||
33 | DEFINE_PER_CPU(struct kprobe *, current_kprobe) = NULL; | 33 | DEFINE_PER_CPU(struct kprobe *, current_kprobe) = NULL; |
34 | DEFINE_PER_CPU(struct kprobe_ctlblk, kprobe_ctlblk); | 34 | DEFINE_PER_CPU(struct kprobe_ctlblk, kprobe_ctlblk); |
35 | 35 | ||
36 | struct kretprobe_blackpoint kretprobe_blacklist[] = {{NULL, NULL}}; | ||
37 | |||
36 | int __kprobes arch_prepare_kprobe(struct kprobe *p) | 38 | int __kprobes arch_prepare_kprobe(struct kprobe *p) |
37 | { | 39 | { |
38 | /* Make sure the probe isn't going on a difficult instruction */ | 40 | /* Make sure the probe isn't going on a difficult instruction */ |
diff --git a/arch/sparc64/kernel/kprobes.c b/arch/sparc64/kernel/kprobes.c index c93a15b785fa..d94f901d321e 100644 --- a/arch/sparc64/kernel/kprobes.c +++ b/arch/sparc64/kernel/kprobes.c | |||
@@ -42,6 +42,8 @@ | |||
42 | DEFINE_PER_CPU(struct kprobe *, current_kprobe) = NULL; | 42 | DEFINE_PER_CPU(struct kprobe *, current_kprobe) = NULL; |
43 | DEFINE_PER_CPU(struct kprobe_ctlblk, kprobe_ctlblk); | 43 | DEFINE_PER_CPU(struct kprobe_ctlblk, kprobe_ctlblk); |
44 | 44 | ||
45 | struct kretprobe_blackpoint kretprobe_blacklist[] = {{NULL, NULL}}; | ||
46 | |||
45 | int __kprobes arch_prepare_kprobe(struct kprobe *p) | 47 | int __kprobes arch_prepare_kprobe(struct kprobe *p) |
46 | { | 48 | { |
47 | p->ainsn.insn[0] = *p->addr; | 49 | p->ainsn.insn[0] = *p->addr; |
diff --git a/arch/x86/kernel/kprobes_32.c b/arch/x86/kernel/kprobes_32.c index 06b86e5617f6..90f778c04b3f 100644 --- a/arch/x86/kernel/kprobes_32.c +++ b/arch/x86/kernel/kprobes_32.c | |||
@@ -41,6 +41,13 @@ void jprobe_return_end(void); | |||
41 | DEFINE_PER_CPU(struct kprobe *, current_kprobe) = NULL; | 41 | DEFINE_PER_CPU(struct kprobe *, current_kprobe) = NULL; |
42 | DEFINE_PER_CPU(struct kprobe_ctlblk, kprobe_ctlblk); | 42 | DEFINE_PER_CPU(struct kprobe_ctlblk, kprobe_ctlblk); |
43 | 43 | ||
44 | struct kretprobe_blackpoint kretprobe_blacklist[] = { | ||
45 | {"__switch_to", }, /* This function switches only current task, but | ||
46 | doesn't switch kernel stack.*/ | ||
47 | {NULL, NULL} /* Terminator */ | ||
48 | }; | ||
49 | const int kretprobe_blacklist_size = ARRAY_SIZE(kretprobe_blacklist); | ||
50 | |||
44 | /* insert a jmp code */ | 51 | /* insert a jmp code */ |
45 | static __always_inline void set_jmp_op(void *from, void *to) | 52 | static __always_inline void set_jmp_op(void *from, void *to) |
46 | { | 53 | { |
diff --git a/arch/x86/kernel/kprobes_64.c b/arch/x86/kernel/kprobes_64.c index 7c16506d681f..681b801c5e26 100644 --- a/arch/x86/kernel/kprobes_64.c +++ b/arch/x86/kernel/kprobes_64.c | |||
@@ -48,6 +48,13 @@ static void __kprobes arch_copy_kprobe(struct kprobe *p); | |||
48 | DEFINE_PER_CPU(struct kprobe *, current_kprobe) = NULL; | 48 | DEFINE_PER_CPU(struct kprobe *, current_kprobe) = NULL; |
49 | DEFINE_PER_CPU(struct kprobe_ctlblk, kprobe_ctlblk); | 49 | DEFINE_PER_CPU(struct kprobe_ctlblk, kprobe_ctlblk); |
50 | 50 | ||
51 | struct kretprobe_blackpoint kretprobe_blacklist[] = { | ||
52 | {"__switch_to", }, /* This function switches only current task, but | ||
53 | doesn't switch kernel stack.*/ | ||
54 | {NULL, NULL} /* Terminator */ | ||
55 | }; | ||
56 | const int kretprobe_blacklist_size = ARRAY_SIZE(kretprobe_blacklist); | ||
57 | |||
51 | /* | 58 | /* |
52 | * returns non-zero if opcode modifies the interrupt flag. | 59 | * returns non-zero if opcode modifies the interrupt flag. |
53 | */ | 60 | */ |
diff --git a/arch/x86/kernel/process_64.c b/arch/x86/kernel/process_64.c index 7352d4b377e6..6309b275cb9c 100644 --- a/arch/x86/kernel/process_64.c +++ b/arch/x86/kernel/process_64.c | |||
@@ -581,7 +581,7 @@ static inline void __switch_to_xtra(struct task_struct *prev_p, | |||
581 | * | 581 | * |
582 | * Kprobes not supported here. Set the probe on schedule instead. | 582 | * Kprobes not supported here. Set the probe on schedule instead. |
583 | */ | 583 | */ |
584 | __kprobes struct task_struct * | 584 | struct task_struct * |
585 | __switch_to(struct task_struct *prev_p, struct task_struct *next_p) | 585 | __switch_to(struct task_struct *prev_p, struct task_struct *next_p) |
586 | { | 586 | { |
587 | struct thread_struct *prev = &prev_p->thread, | 587 | struct thread_struct *prev = &prev_p->thread, |