summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--kprobe/arch/asm-x86/dbi_kprobes.c2
-rw-r--r--kprobe/dbi_kprobes.c62
-rw-r--r--kprobe/dbi_kprobes.h20
3 files changed, 17 insertions, 67 deletions
diff --git a/kprobe/arch/asm-x86/dbi_kprobes.c b/kprobe/arch/asm-x86/dbi_kprobes.c
index a7c65eaa..c69a831f 100644
--- a/kprobe/arch/asm-x86/dbi_kprobes.c
+++ b/kprobe/arch/asm-x86/dbi_kprobes.c
@@ -489,6 +489,8 @@ int setjmp_pre_handler (struct kprobe *p, struct pt_regs *regs)
return 1;
}
+void dbi_jprobe_return_end(void);
+
void dbi_jprobe_return (void)
{
struct kprobe_ctlblk *kcb = get_kprobe_ctlblk ();
diff --git a/kprobe/dbi_kprobes.c b/kprobe/dbi_kprobes.c
index c20150bb..35e321ec 100644
--- a/kprobe/dbi_kprobes.c
+++ b/kprobe/dbi_kprobes.c
@@ -121,7 +121,9 @@ static void exit_sm(void)
/* FIXME: free */
}
-void kretprobe_assert(struct kretprobe_instance *ri, unsigned long orig_ret_address, unsigned long trampoline_address)
+static void kretprobe_assert(struct kretprobe_instance *ri,
+ unsigned long orig_ret_address,
+ unsigned long trampoline_address)
{
if (!orig_ret_address || (orig_ret_address == trampoline_address)) {
struct task_struct *task;
@@ -274,8 +276,10 @@ void kprobes_inc_nmissed_count(struct kprobe *p)
}
}
+static int alloc_nodes_kretprobe(struct kretprobe *rp);
+
/* Called with kretprobe_lock held */
-struct kretprobe_instance *get_free_rp_inst(struct kretprobe *rp)
+static struct kretprobe_instance *get_free_rp_inst(struct kretprobe *rp)
{
struct kretprobe_instance *ri;
DECLARE_NODE_PTR_FOR_HLIST(node);
@@ -292,10 +296,10 @@ struct kretprobe_instance *get_free_rp_inst(struct kretprobe *rp)
return NULL;
}
-EXPORT_SYMBOL_GPL(get_free_rp_inst);
/* Called with kretprobe_lock held */
-struct kretprobe_instance *get_free_rp_inst_no_alloc(struct kretprobe *rp)
+static struct kretprobe_instance *
+get_free_rp_inst_no_alloc(struct kretprobe *rp)
{
struct kretprobe_instance *ri;
DECLARE_NODE_PTR_FOR_HLIST(node);
@@ -308,7 +312,7 @@ struct kretprobe_instance *get_free_rp_inst_no_alloc(struct kretprobe *rp)
}
/* Called with kretprobe_lock held */
-struct kretprobe_instance *get_used_rp_inst(struct kretprobe *rp)
+static struct kretprobe_instance *get_used_rp_inst(struct kretprobe *rp)
{
struct kretprobe_instance *ri;
DECLARE_NODE_PTR_FOR_HLIST(node);
@@ -319,10 +323,9 @@ struct kretprobe_instance *get_used_rp_inst(struct kretprobe *rp)
return NULL;
}
-EXPORT_SYMBOL_GPL(get_used_rp_inst);
/* Called with kretprobe_lock held */
-void add_rp_inst (struct kretprobe_instance *ri)
+static void add_rp_inst(struct kretprobe_instance *ri)
{
/*
* Remove rp inst off the free list -
@@ -339,10 +342,9 @@ void add_rp_inst (struct kretprobe_instance *ri)
INIT_HLIST_NODE(&ri->uflist);
hlist_add_head(&ri->uflist, &ri->rp->used_instances);
}
-EXPORT_SYMBOL_GPL(add_rp_inst);
/* Called with kretprobe_lock held */
-void recycle_rp_inst(struct kretprobe_instance *ri)
+static void recycle_rp_inst(struct kretprobe_instance *ri)
{
if (ri->rp) {
hlist_del(&ri->hlist);
@@ -353,15 +355,13 @@ void recycle_rp_inst(struct kretprobe_instance *ri)
hlist_add_head(&ri->uflist, &ri->rp->free_instances);
}
}
-EXPORT_SYMBOL_GPL(recycle_rp_inst);
-struct hlist_head *kretprobe_inst_table_head(void *hash_key)
+static struct hlist_head *kretprobe_inst_table_head(void *hash_key)
{
return &kretprobe_inst_table[hash_ptr(hash_key, KPROBE_HASH_BITS)];
}
-EXPORT_SYMBOL_GPL(kretprobe_inst_table_head);
-void free_rp_inst(struct kretprobe *rp)
+static void free_rp_inst(struct kretprobe *rp)
{
struct kretprobe_instance *ri;
while ((ri = get_free_rp_inst_no_alloc(rp)) != NULL) {
@@ -369,7 +369,6 @@ void free_rp_inst(struct kretprobe *rp)
kfree(ri);
}
}
-EXPORT_SYMBOL_GPL(free_rp_inst);
/*
* Keep all fields in the kprobe consistent
@@ -454,7 +453,7 @@ static inline void add_aggr_kprobe(struct kprobe *ap, struct kprobe *p)
* This is the second or subsequent kprobe at the address - handle
* the intricacies
*/
-int register_aggr_kprobe(struct kprobe *old_p, struct kprobe *p)
+static int register_aggr_kprobe(struct kprobe *old_p, struct kprobe *p)
{
int ret = 0;
struct kprobe *ap;
@@ -485,7 +484,6 @@ int register_aggr_kprobe(struct kprobe *old_p, struct kprobe *p)
return ret;
}
-EXPORT_SYMBOL_GPL(register_aggr_kprobe);
static void remove_kprobe(struct kprobe *p)
{
@@ -730,7 +728,7 @@ int trampoline_probe_handler(struct kprobe *p, struct pt_regs *regs)
#define SCHED_RP_NR 200
#define COMMON_RP_NR 10
-int alloc_nodes_kretprobe(struct kretprobe *rp)
+static int alloc_nodes_kretprobe(struct kretprobe *rp)
{
int alloc_nodes;
struct kretprobe_instance *inst;
@@ -900,36 +898,6 @@ void dbi_unregister_kretprobe(struct kretprobe *rp)
dbi_unregister_kretprobes(&rp, 1);
}
-struct kretprobe *clone_kretprobe(struct kretprobe *rp)
-{
- struct kprobe *old_p;
- struct kretprobe *clone = NULL;
- int ret;
-
- clone = kmalloc(sizeof(struct kretprobe), GFP_KERNEL);
- if (!clone) {
- DBPRINTF ("failed to alloc memory for clone probe %p!", rp->kp.addr);
- return NULL;
- }
- memcpy(clone, rp, sizeof(struct kretprobe));
- clone->kp.pre_handler = pre_handler_kretprobe;
- clone->kp.post_handler = NULL;
- clone->kp.fault_handler = NULL;
- clone->kp.break_handler = NULL;
- old_p = get_kprobe(rp->kp.addr);
- if (old_p) {
- ret = register_aggr_kprobe(old_p, &clone->kp);
- if (ret) {
- kfree(clone);
- return NULL;
- }
- atomic_inc(&kprobe_count);
- }
-
- return clone;
-}
-EXPORT_SYMBOL_GPL(clone_kretprobe);
-
static void inline rm_task_trampoline(struct task_struct *p, struct kretprobe_instance *ri)
{
arch_set_task_pc(p, (unsigned long)ri->ret_addr);
diff --git a/kprobe/dbi_kprobes.h b/kprobe/dbi_kprobes.h
index 1332bea9..89c67db1 100644
--- a/kprobe/dbi_kprobes.h
+++ b/kprobe/dbi_kprobes.h
@@ -230,27 +230,19 @@ extern void kprobes_inc_nmissed_count (struct kprobe *p);
/* Get the kprobe at this addr (if any) - called with preemption disabled */
struct kprobe *get_kprobe(void *addr);
-struct hlist_head *kretprobe_inst_table_head (void *hash_key);
int dbi_register_kprobe (struct kprobe *p);
void dbi_unregister_kprobe(struct kprobe *p);
-int register_aggr_kprobe (struct kprobe *old_p, struct kprobe *p);
-
int setjmp_pre_handler (struct kprobe *, struct pt_regs *);
int longjmp_break_handler (struct kprobe *, struct pt_regs *);
int dbi_register_jprobe (struct jprobe *p);
void dbi_unregister_jprobe (struct jprobe *p);
void dbi_jprobe_return (void);
-void dbi_jprobe_return_end (void);
-
-struct kretprobe * clone_kretprobe (struct kretprobe *rp);
-struct kretprobe_instance * get_used_rp_inst (struct kretprobe *rp);
-int alloc_nodes_kretprobe(struct kretprobe *rp);
int dbi_register_kretprobe (struct kretprobe *rp);
void dbi_unregister_kretprobe (struct kretprobe *rp);
void dbi_unregister_kretprobes(struct kretprobe **rpp, size_t size);
@@ -269,23 +261,11 @@ void dbi_unregister_kretprobes_top(struct kretprobe **rps, size_t size,
void dbi_unregister_kretprobe_bottom(struct kretprobe *rp);
void dbi_unregister_kretprobes_bottom(struct kretprobe **rps, size_t size);
-void kretprobe_assert (struct kretprobe_instance *ri,
- unsigned long orig_ret_address, unsigned long trampoline_address);
-
-struct kretprobe_instance *get_free_rp_inst (struct kretprobe *rp);
-struct kretprobe_instance *get_free_rp_inst_no_alloc (struct kretprobe *rp);
-void free_rp_inst (struct kretprobe *rp);
-void add_rp_inst (struct kretprobe_instance *ri);
-void recycle_rp_inst (struct kretprobe_instance *ri);
int dbi_disarm_urp_inst_for_task(struct task_struct *parent, struct task_struct *task);
int trampoline_probe_handler (struct kprobe *p, struct pt_regs *regs);
-#ifdef KPROBES_PROFILE
-int pre_handler_kretprobe (struct kprobe *p, struct pt_regs *regs, struct vm_area_struct **vma, struct page **page, unsigned long **kaddr);
-void set_normalized_timeval (struct timeval *tv, time_t sec, suseconds_t usec);
-#endif
extern DEFINE_PER_CPU (struct kprobe *, current_kprobe);
extern struct hlist_head kprobe_table[KPROBE_TABLE_SIZE];