0

我开始学习内核模块编程。要将任何参数传递给内核模块,您可以使用module_param( )宏,我猜它的工作原理类似于用户空间中的动态链接方法(将符号重定位到内核模块加载程序的运行时间),如果我错了,您可以纠正我。无论如何,module_param()需要一个权限参数来指定参数值的读写和执行权限。那么,module_param()如果您正确设置权限以及如何module_param_hw( )解决这些问题,究竟会如何变得不安全。我知道module_param_hw当我们传递与硬件相关的值时应该使用它,但不明白为什么它更安全。

4

1 回答 1

0

它或枚举 KERNEL_PARAM_FL_UNSAFE 以标记文件 module_param.h 中 kernel_param 结构的成员。检查宏 module_param_hw_named

它还添加了与内核锁定功能相关的额外检查,

if (kp->flags & KERNEL_PARAM_FL_HWPARAM &&
    security_locked_down(LOCKDOWN_MODULE_PARAMETERS))
    return false;

您可以在文件 kernel/params.c 中检查函数 param_check_unsafe。该函数将在带参数的内核中插入模块时调用。

于 2021-04-20T10:28:00.883 回答