c-为什么module_param_hw()宏比module_param()更安全



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

它或枚举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。当在带有参数的内核中插入模块时,会调用该函数。

最新更新