From 8580794d704f8f357eac4662fdb31842e97ee9e2 Mon Sep 17 00:00:00 2001 From: Vyacheslav Cherkashin Date: Thu, 25 Apr 2013 15:55:34 +0400 Subject: [PATCH] [REFACTOR] redesign install_kern_otg_probe() --- driver/probes_manager.c | 51 +++++++++++++------------------------------------ 1 file changed, 13 insertions(+), 38 deletions(-) diff --git a/driver/probes_manager.c b/driver/probes_manager.c index 02310dd..1e247b9 100644 --- a/driver/probes_manager.c +++ b/driver/probes_manager.c @@ -218,53 +218,28 @@ int install_kern_otg_probe(unsigned long addr, unsigned long jp_handler, unsigned long rp_handler) { - kernel_probe_t *new_probe = NULL; - kernel_probe_t *probe; + kernel_probe_t *p; int ret = 0; - probe = find_probe(addr); - if (probe) { - /* It is not a problem if we have already registered - this probe before */ - return 0; - } - - new_probe = create_kern_probe(addr); - if (!new_probe) - return -1; - - if (pre_handler) { - new_probe->jprobe.pre_entry = - (kprobe_pre_entry_handler_t) - pre_handler; - } else { - new_probe->jprobe.pre_entry = - (kprobe_pre_entry_handler_t) - def_jprobe_event_pre_handler; + p = find_probe(addr); + if (p) { + return -EINVAL;; } - if (jp_handler) { - new_probe->jprobe.entry = (kprobe_opcode_t *)jp_handler; - } else { - new_probe->jprobe.entry = - (kprobe_opcode_t *) - def_jprobe_event_handler; - } + p = create_kern_probe(addr); + if (!p) + return -ENOMEM; - if (rp_handler) { - new_probe->retprobe.handler = (kretprobe_handler_t)rp_handler; - } else { - new_probe->retprobe.handler = - (kretprobe_handler_t) - def_retprobe_event_handler; - } + p->jprobe.pre_entry = (kprobe_pre_entry_handler_t)pre_handler; + p->jprobe.entry = (kprobe_opcode_t *)jp_handler; + p->retprobe.handler = (kretprobe_handler_t)rp_handler; - hlist_add_head_rcu (&new_probe->hlist, &kernel_probes); + add_probe_to_list(p); - ret = register_kernel_probe(new_probe); + ret = register_kernel_probe(p); if (ret) { EPRINTF("Cannot set kernel probe at addr %lx", addr); - return -1; + return ret; } return 0; -- 2.7.4