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