【问题标题】: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() 的每个文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-28
      • 2017-04-07
      • 2018-07-19
      • 2021-03-20
      • 1970-01-01
      • 2013-10-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多