【问题标题】:Error when inserting kernel module: module * uses symbol * from namespace *, but does not import it插入内核模块时出错:模块 * 使用来自命名空间 * 的符号 *,但没有导入它
【发布时间】:2022-01-26 22:18:47
【问题描述】:
为rtl8189fs编译驱动时,没有终止编译就产生了警告:
WARNING: module 8189fs uses symbol kernel_read from namespace VFS_internal_I_am_really_a_filesystem_and_am_NOT_a_driver, but does not import it.
当插入这个模块时,这个警告被打印到内核缓冲区并且插入失败。
驱动来源:rtl8189ES_linux
内核版本:5.4.61
【问题讨论】:
标签:
linux
kernel
kernel-module
【解决方案1】:
原来源码使用kernel_read()函数,需要在文件系统模块外导入VFS命名空间。这可以通过在调用kernel_read()的语句之前添加此声明来完成:
MODULE_IMPORT_NS(VFS_internal_I_am_really_a_filesystem_and_am_NOT_a_driver);
此修复应应用于源代码树中调用kernel_read() 的每个文件。