Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux kernel 模块中的未知符号_Linux Kernel_Kernel_Gnu_Kernel Module - Fatal编程技术网

Linux kernel 模块中的未知符号

Linux kernel 模块中的未知符号,linux-kernel,kernel,gnu,kernel-module,Linux Kernel,Kernel,Gnu,Kernel Module,我有一个内核模块,它可能是为2.6xx内核版本编写的。现在,我想将该模块插入内核版本3.1x及以上。我已经调整和更改了代码,显然现在除了下面提到的警告之外,还有编译错误 警告:“do_mmap_pgoff”[/home/abdullah/Downloads/my_mod.ko]未定义 警告:“putname”[/home/abdullah/Downloads/my_mod.ko]未定义 警告:“get_task_cred”[/home/abdullah/Downloads/my_mod.ko]未

我有一个内核模块,它可能是为2.6xx内核版本编写的。现在,我想将该模块插入内核版本3.1x及以上。我已经调整和更改了代码,显然现在除了下面提到的警告之外,还有编译错误

警告:“do_mmap_pgoff”[/home/abdullah/Downloads/my_mod.ko]未定义

警告:“putname”[/home/abdullah/Downloads/my_mod.ko]未定义

警告:“get_task_cred”[/home/abdullah/Downloads/my_mod.ko]未定义

现在,当我检查kernel Module.symvers时,我没有在其中找到所有三个用于导出的函数。这将导致插入模块时出现致命错误。现在我的问题是:有人知道这些函数的替代方法吗?任何帮助都将不胜感激。下面是一个示例函数,它说明了整个函数太长的情况

int函数_1(常量字符*fname)
{
结构信任*任务信任;
结构文件名*filename=NULL;
filename=getname(uu用户(fname));
task_cred=(struct cred*)get_task_cred(当前);
putname(文件名);
filename=NULL;
返回1;
}

还有另一种方法有点不安全,任何不在生产系统上的人都可以像我一样在内核源文件中导出这些函数

首先使用命令“cat/proc/kallsyms | grep”检查是否导出了上述符号。如果可以看到这些符号,则会导出它们,否则不会导出它们,并且无法在模块中使用。我检查了3.10内核源代码,发现get_task_cred()api没有导出。如果没有符号,则意味着您必须使用现有api移植代码。感谢Gautham和Andy的关注,我正在寻找这些函数的替代方法,因为这是我的问题,因为我已经检查了kallsyms。对于do_mmap_pgoff,我找到了另一个仍在搜索的选项(vm_mmap_pgoff)。