Lines Matching refs:ops
66 struct klp_ops *ops; in klp_find_ops() local
69 list_for_each_entry(ops, &klp_ops, node) { in klp_find_ops()
70 func = list_first_entry(&ops->func_stack, struct klp_func, in klp_find_ops()
73 return ops; in klp_find_ops()
337 struct klp_ops *ops; in klp_ftrace_handler() local
340 ops = container_of(fops, struct klp_ops, fops); in klp_ftrace_handler()
343 func = list_first_or_null_rcu(&ops->func_stack, struct klp_func, in klp_ftrace_handler()
355 struct klp_ops *ops; in klp_disable_func() local
362 ops = klp_find_ops(func->old_addr); in klp_disable_func()
363 if (WARN_ON(!ops)) in klp_disable_func()
366 if (list_is_singular(&ops->func_stack)) { in klp_disable_func()
367 WARN_ON(unregister_ftrace_function(&ops->fops)); in klp_disable_func()
368 WARN_ON(ftrace_set_filter_ip(&ops->fops, func->old_addr, 1, 0)); in klp_disable_func()
371 list_del(&ops->node); in klp_disable_func()
372 kfree(ops); in klp_disable_func()
382 struct klp_ops *ops; in klp_enable_func() local
391 ops = klp_find_ops(func->old_addr); in klp_enable_func()
392 if (!ops) { in klp_enable_func()
393 ops = kzalloc(sizeof(*ops), GFP_KERNEL); in klp_enable_func()
394 if (!ops) in klp_enable_func()
397 ops->fops.func = klp_ftrace_handler; in klp_enable_func()
398 ops->fops.flags = FTRACE_OPS_FL_SAVE_REGS | in klp_enable_func()
402 list_add(&ops->node, &klp_ops); in klp_enable_func()
404 INIT_LIST_HEAD(&ops->func_stack); in klp_enable_func()
405 list_add_rcu(&func->stack_node, &ops->func_stack); in klp_enable_func()
407 ret = ftrace_set_filter_ip(&ops->fops, func->old_addr, 0, 0); in klp_enable_func()
414 ret = register_ftrace_function(&ops->fops); in klp_enable_func()
418 ftrace_set_filter_ip(&ops->fops, func->old_addr, 1, 0); in klp_enable_func()
424 list_add_rcu(&func->stack_node, &ops->func_stack); in klp_enable_func()
433 list_del(&ops->node); in klp_enable_func()
434 kfree(ops); in klp_enable_func()