读取内核空间中的符号链接

时间:2014-11-09 16:03:23

标签: c linux-kernel symlink

我正在编写LKM并需要找出特定符号链接指向的位置。基本上我需要syscall readlinkat(或readlink)的功能,但需要内核空间。有一个简单的方法吗?

直接使用readlinkat对我不起作用,我总是得到EFAULT(我想这是因为我的缓冲区明显位于内核内存空间而不是用户空间)。

1 个答案:

答案 0 :(得分:4)

首先,您不能直接在内核模块中使用用户空间系统调用(readlinkat()readlink())。而是需要在内核空间中使用导出的函数/符号。

接下来,可能需要查看您正在使用的文件系统的struct inode_operations。另请查看内部调用vfs_readlink()的{​​{3}}。