插入内核模块时出错:模块*使用命名空间*中的符号*,但不导入它

Error when inserting kernel module: module * uses symbol * from namespace *, but does not import it

为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

原来是源码使用了kernel_read()函数,需要在文件系统模块外导入VFS命名空间。这可以通过在调用 kernel_read():

的语句之前添加此声明来完成
MODULE_IMPORT_NS(VFS_internal_I_am_really_a_filesystem_and_am_NOT_a_driver);

此修复应应用于在源代码树中调用 kernel_read() 的每个文件。