提交 6772926b 编写于 作者: R Rusty Lynch 提交者: Linus Torvalds

[PATCH] kprobes: fix namespace problem and sparc64 build

The following renames arch_init, a kprobes function for performing any
architecture specific initialization, to arch_init_kprobes in order to
cleanup the namespace.

Also, this patch adds arch_init_kprobes to sparc64 to fix the sparc64 kprobes
build from the last return probe patch.
Signed-off-by: NAndrew Morton <akpm@osdl.org>
Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
上级 4b1294f9
...@@ -537,7 +537,7 @@ static struct kprobe trampoline_p = { ...@@ -537,7 +537,7 @@ static struct kprobe trampoline_p = {
.pre_handler = trampoline_probe_handler .pre_handler = trampoline_probe_handler
}; };
int __init arch_init(void) int __init arch_init_kprobes(void)
{ {
return register_kprobe(&trampoline_p); return register_kprobe(&trampoline_p);
} }
...@@ -713,7 +713,7 @@ static struct kprobe trampoline_p = { ...@@ -713,7 +713,7 @@ static struct kprobe trampoline_p = {
.pre_handler = trampoline_probe_handler .pre_handler = trampoline_probe_handler
}; };
int __init arch_init(void) int __init arch_init_kprobes(void)
{ {
trampoline_p.addr = trampoline_p.addr =
(kprobe_opcode_t *)((struct fnptr *)kretprobe_trampoline)->ip; (kprobe_opcode_t *)((struct fnptr *)kretprobe_trampoline)->ip;
......
...@@ -444,7 +444,7 @@ static struct kprobe trampoline_p = { ...@@ -444,7 +444,7 @@ static struct kprobe trampoline_p = {
.pre_handler = trampoline_probe_handler .pre_handler = trampoline_probe_handler
}; };
int __init arch_init(void) int __init arch_init_kprobes(void)
{ {
return register_kprobe(&trampoline_p); return register_kprobe(&trampoline_p);
} }
...@@ -433,3 +433,8 @@ int longjmp_break_handler(struct kprobe *p, struct pt_regs *regs) ...@@ -433,3 +433,8 @@ int longjmp_break_handler(struct kprobe *p, struct pt_regs *regs)
return 0; return 0;
} }
/* architecture specific initialization */
int arch_init_kprobes(void)
{
return 0;
}
...@@ -682,7 +682,7 @@ static struct kprobe trampoline_p = { ...@@ -682,7 +682,7 @@ static struct kprobe trampoline_p = {
.pre_handler = trampoline_probe_handler .pre_handler = trampoline_probe_handler
}; };
int __init arch_init(void) int __init arch_init_kprobes(void)
{ {
return register_kprobe(&trampoline_p); return register_kprobe(&trampoline_p);
} }
...@@ -155,7 +155,7 @@ extern void arch_copy_kprobe(struct kprobe *p); ...@@ -155,7 +155,7 @@ extern void arch_copy_kprobe(struct kprobe *p);
extern void arch_arm_kprobe(struct kprobe *p); extern void arch_arm_kprobe(struct kprobe *p);
extern void arch_disarm_kprobe(struct kprobe *p); extern void arch_disarm_kprobe(struct kprobe *p);
extern void arch_remove_kprobe(struct kprobe *p); extern void arch_remove_kprobe(struct kprobe *p);
extern int arch_init(void); extern int arch_init_kprobes(void);
extern void show_registers(struct pt_regs *regs); extern void show_registers(struct pt_regs *regs);
extern kprobe_opcode_t *get_insn_slot(void); extern kprobe_opcode_t *get_insn_slot(void);
extern void free_insn_slot(kprobe_opcode_t *slot); extern void free_insn_slot(kprobe_opcode_t *slot);
......
...@@ -574,7 +574,7 @@ static int __init init_kprobes(void) ...@@ -574,7 +574,7 @@ static int __init init_kprobes(void)
INIT_HLIST_HEAD(&kretprobe_inst_table[i]); INIT_HLIST_HEAD(&kretprobe_inst_table[i]);
} }
err = arch_init(); err = arch_init_kprobes();
if (!err) if (!err)
err = register_die_notifier(&kprobe_exceptions_nb); err = register_die_notifier(&kprobe_exceptions_nb);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册