Lines Matching refs:fp

29 	struct fprobe *fp;  in __fprobe_handler()  local
33 fp = container_of(ops, struct fprobe, ops); in __fprobe_handler()
35 if (fp->exit_handler) { in __fprobe_handler()
36 rh = rethook_try_get(fp->rethook); in __fprobe_handler()
38 fp->nmissed++; in __fprobe_handler()
44 if (fp->entry_data_size) in __fprobe_handler()
48 if (fp->entry_handler) in __fprobe_handler()
49 ret = fp->entry_handler(fp, ip, parent_ip, ftrace_get_regs(fregs), entry_data); in __fprobe_handler()
63 struct fprobe *fp; in fprobe_handler() local
66 fp = container_of(ops, struct fprobe, ops); in fprobe_handler()
67 if (fprobe_disabled(fp)) in fprobe_handler()
75 fp->nmissed++; in fprobe_handler()
87 struct fprobe *fp; in fprobe_kprobe_handler() local
90 fp = container_of(ops, struct fprobe, ops); in fprobe_kprobe_handler()
91 if (fprobe_disabled(fp)) in fprobe_kprobe_handler()
99 fp->nmissed++; in fprobe_kprobe_handler()
110 fp->nmissed++; in fprobe_kprobe_handler()
125 struct fprobe *fp = (struct fprobe *)data; in fprobe_exit_handler() local
129 if (!fp || fprobe_disabled(fp)) in fprobe_exit_handler()
140 fp->nmissed++; in fprobe_exit_handler()
144 fp->exit_handler(fp, fpr->entry_ip, ret_ip, regs, in fprobe_exit_handler()
145 fp->entry_data_size ? (void *)fpr->data : NULL); in fprobe_exit_handler()
178 static void fprobe_init(struct fprobe *fp) in fprobe_init() argument
180 fp->nmissed = 0; in fprobe_init()
181 if (fprobe_shared_with_kprobes(fp)) in fprobe_init()
182 fp->ops.func = fprobe_kprobe_handler; in fprobe_init()
184 fp->ops.func = fprobe_handler; in fprobe_init()
185 fp->ops.flags |= FTRACE_OPS_FL_SAVE_REGS; in fprobe_init()
188 static int fprobe_init_rethook(struct fprobe *fp, int num) in fprobe_init_rethook() argument
195 if (!fp->exit_handler) { in fprobe_init_rethook()
196 fp->rethook = NULL; in fprobe_init_rethook()
201 if (fp->nr_maxactive) in fprobe_init_rethook()
202 size = fp->nr_maxactive; in fprobe_init_rethook()
208 fp->rethook = rethook_alloc((void *)fp, fprobe_exit_handler); in fprobe_init_rethook()
209 if (!fp->rethook) in fprobe_init_rethook()
214 node = kzalloc(sizeof(*node) + fp->entry_data_size, GFP_KERNEL); in fprobe_init_rethook()
216 rethook_free(fp->rethook); in fprobe_init_rethook()
217 fp->rethook = NULL; in fprobe_init_rethook()
220 rethook_add_node(fp->rethook, &node->node); in fprobe_init_rethook()
225 static void fprobe_fail_cleanup(struct fprobe *fp) in fprobe_fail_cleanup() argument
227 if (fp->rethook) { in fprobe_fail_cleanup()
229 rethook_free(fp->rethook); in fprobe_fail_cleanup()
230 fp->rethook = NULL; in fprobe_fail_cleanup()
232 ftrace_free_filter(&fp->ops); in fprobe_fail_cleanup()
246 int register_fprobe(struct fprobe *fp, const char *filter, const char *notfilter) in register_fprobe() argument
252 if (!fp || !filter) in register_fprobe()
255 fprobe_init(fp); in register_fprobe()
259 ret = ftrace_set_filter(&fp->ops, str, len, 0); in register_fprobe()
267 ret = ftrace_set_notrace(&fp->ops, str, len, 0); in register_fprobe()
277 hash = rcu_access_pointer(fp->ops.local_hash.filter_hash); in register_fprobe()
281 ret = fprobe_init_rethook(fp, (int)hash->count); in register_fprobe()
283 ret = register_ftrace_function(&fp->ops); in register_fprobe()
287 fprobe_fail_cleanup(fp); in register_fprobe()
305 int register_fprobe_ips(struct fprobe *fp, unsigned long *addrs, int num) in register_fprobe_ips() argument
309 if (!fp || !addrs || num <= 0) in register_fprobe_ips()
312 fprobe_init(fp); in register_fprobe_ips()
314 ret = ftrace_set_filter_ips(&fp->ops, addrs, num, 0, 0); in register_fprobe_ips()
318 ret = fprobe_init_rethook(fp, num); in register_fprobe_ips()
320 ret = register_ftrace_function(&fp->ops); in register_fprobe_ips()
323 fprobe_fail_cleanup(fp); in register_fprobe_ips()
339 int register_fprobe_syms(struct fprobe *fp, const char **syms, int num) in register_fprobe_syms() argument
344 if (!fp || !syms || num <= 0) in register_fprobe_syms()
351 ret = register_fprobe_ips(fp, addrs, num); in register_fprobe_syms()
359 bool fprobe_is_registered(struct fprobe *fp) in fprobe_is_registered() argument
361 if (!fp || (fp->ops.saved_func != fprobe_handler && in fprobe_is_registered()
362 fp->ops.saved_func != fprobe_kprobe_handler)) in fprobe_is_registered()
375 int unregister_fprobe(struct fprobe *fp) in unregister_fprobe() argument
379 if (!fprobe_is_registered(fp)) in unregister_fprobe()
382 if (fp->rethook) in unregister_fprobe()
383 rethook_stop(fp->rethook); in unregister_fprobe()
385 ret = unregister_ftrace_function(&fp->ops); in unregister_fprobe()
389 if (fp->rethook) in unregister_fprobe()
390 rethook_free(fp->rethook); in unregister_fprobe()
392 ftrace_free_filter(&fp->ops); in unregister_fprobe()