1 | // SPDX-License-Identifier: GPL-2.0-only |
---|---|
2 | #include <linux/fault-inject.h> |
3 | #include <linux/fault-inject-usercopy.h> |
4 | |
5 | static struct { |
6 | struct fault_attr attr; |
7 | } fail_usercopy = { |
8 | .attr = FAULT_ATTR_INITIALIZER, |
9 | }; |
10 | |
11 | static int __init setup_fail_usercopy(char *str) |
12 | { |
13 | return setup_fault_attr(attr: &fail_usercopy.attr, str); |
14 | } |
15 | __setup("fail_usercopy=", setup_fail_usercopy); |
16 | |
17 | #ifdef CONFIG_FAULT_INJECTION_DEBUG_FS |
18 | |
19 | static int __init fail_usercopy_debugfs(void) |
20 | { |
21 | struct dentry *dir; |
22 | |
23 | dir = fault_create_debugfs_attr(name: "fail_usercopy", NULL, |
24 | attr: &fail_usercopy.attr); |
25 | if (IS_ERR(ptr: dir)) |
26 | return PTR_ERR(ptr: dir); |
27 | |
28 | return 0; |
29 | } |
30 | |
31 | late_initcall(fail_usercopy_debugfs); |
32 | |
33 | #endif /* CONFIG_FAULT_INJECTION_DEBUG_FS */ |
34 | |
35 | bool should_fail_usercopy(void) |
36 | { |
37 | return should_fail(attr: &fail_usercopy.attr, size: 1); |
38 | } |
39 | EXPORT_SYMBOL_GPL(should_fail_usercopy); |
40 |