fallback_table.c 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. // SPDX-License-Identifier: GPL-2.0
  2. #include <linux/types.h>
  3. #include <linux/kconfig.h>
  4. #include <linux/list.h>
  5. #include <linux/slab.h>
  6. #include <linux/export.h>
  7. #include <linux/security.h>
  8. #include <linux/highmem.h>
  9. #include <linux/umh.h>
  10. #include <linux/sysctl.h>
  11. #include "fallback.h"
  12. #include "firmware.h"
  13. /*
  14. * firmware fallback configuration table
  15. */
  16. struct firmware_fallback_config fw_fallback_config = {
  17. .force_sysfs_fallback = IS_ENABLED(CONFIG_FW_LOADER_USER_HELPER_FALLBACK),
  18. .loading_timeout = 60,
  19. .old_timeout = 60,
  20. };
  21. EXPORT_SYMBOL_NS_GPL(fw_fallback_config, FIRMWARE_LOADER_PRIVATE);
  22. #ifdef CONFIG_SYSCTL
  23. static struct ctl_table firmware_config_table[] = {
  24. {
  25. .procname = "force_sysfs_fallback",
  26. .data = &fw_fallback_config.force_sysfs_fallback,
  27. .maxlen = sizeof(unsigned int),
  28. .mode = 0644,
  29. .proc_handler = proc_douintvec_minmax,
  30. .extra1 = SYSCTL_ZERO,
  31. .extra2 = SYSCTL_ONE,
  32. },
  33. {
  34. .procname = "ignore_sysfs_fallback",
  35. .data = &fw_fallback_config.ignore_sysfs_fallback,
  36. .maxlen = sizeof(unsigned int),
  37. .mode = 0644,
  38. .proc_handler = proc_douintvec_minmax,
  39. .extra1 = SYSCTL_ZERO,
  40. .extra2 = SYSCTL_ONE,
  41. },
  42. { }
  43. };
  44. static struct ctl_table_header *firmware_config_sysct_table_header;
  45. int register_firmware_config_sysctl(void)
  46. {
  47. firmware_config_sysct_table_header =
  48. register_sysctl("kernel/firmware_config",
  49. firmware_config_table);
  50. if (!firmware_config_sysct_table_header)
  51. return -ENOMEM;
  52. return 0;
  53. }
  54. EXPORT_SYMBOL_NS_GPL(register_firmware_config_sysctl, FIRMWARE_LOADER_PRIVATE);
  55. void unregister_firmware_config_sysctl(void)
  56. {
  57. unregister_sysctl_table(firmware_config_sysct_table_header);
  58. firmware_config_sysct_table_header = NULL;
  59. }
  60. EXPORT_SYMBOL_NS_GPL(unregister_firmware_config_sysctl, FIRMWARE_LOADER_PRIVATE);
  61. #endif /* CONFIG_SYSCTL */