Lines Matching +full:fault +full:- +full:inject
1 // SPDX-License-Identifier: GPL-2.0
3 * fail_function.c: Function-based error injection
5 #include <linux/error-injection.h>
7 #include <linux/fault-inject.h>
42 if (retv < (unsigned long)-MAX_ERRNO) in adjust_error_retval()
43 return (unsigned long)-EINVAL; in adjust_error_retval()
46 if (retv != 0 && retv < (unsigned long)-MAX_ERRNO) in adjust_error_retval()
47 return (unsigned long)-EINVAL; in adjust_error_retval()
62 attr->kp.symbol_name = kstrdup(sym, GFP_KERNEL); in fei_attr_new()
63 if (!attr->kp.symbol_name) { in fei_attr_new()
67 attr->kp.pre_handler = fei_kprobe_handler; in fei_attr_new()
68 attr->kp.post_handler = fei_post_handler; in fei_attr_new()
69 attr->retval = adjust_error_retval(addr, 0); in fei_attr_new()
70 INIT_LIST_HEAD(&attr->list); in fei_attr_new()
78 kfree(attr->kp.symbol_name); in fei_attr_free()
88 if (!strcmp(attr->kp.symbol_name, sym)) in fei_attr_lookup()
120 err = -ENOENT; in fei_retval_set()
124 if (attr->kp.addr) { in fei_retval_set()
125 if (adjust_error_retval((unsigned long)attr->kp.addr, in fei_retval_set()
127 err = -EINVAL; in fei_retval_set()
130 attr->retval = val; in fei_retval_set()
145 err = -ENOENT; in fei_retval_get()
147 *val = attr->retval; in fei_retval_get()
159 dir = debugfs_create_dir(attr->kp.symbol_name, fei_debugfs_dir); in fei_debugfs_add_attr()
166 debugfs_lookup_and_remove(attr->kp.symbol_name, fei_debugfs_dir); in fei_debugfs_remove_attr()
174 regs_set_return_value(regs, attr->retval); in fei_kprobe_handler()
203 seq_printf(m, "%ps\n", attr->kp.addr); in fei_seq_show()
222 unregister_kprobe(&attr->kp); in fei_attr_remove()
223 list_del(&attr->list); in fei_attr_remove()
266 ret = -ENOENT; in fei_write()
276 ret = -EINVAL; in fei_write()
280 ret = -ERANGE; in fei_write()
284 ret = -EBUSY; in fei_write()
289 ret = -ENOMEM; in fei_write()
293 ret = register_kprobe(&attr->kp); in fei_write()
299 list_add_tail(&attr->list, &fei_attr_list); in fei_write()
327 debugfs_create_file("inject", 0600, dir, NULL, &fei_ops); in fei_debugfs_init()