读取内核空间中的符号链接
我正在写一个LKM,需要找出特定符号链接指向的位置。 基本上我需要syscall readlinkat
(或readlink
)的function,但在内核空间。 是否有捷径可寻?
直接使用readlinkat
对我来说不起作用,我总是得到EFAULT(我想这是因为我的缓冲区显然是在内核内存空间而不是用户空间)。
首先,您不能直接在内核模块中使用用户空间系统调用( readlinkat()
或readlink()
)。 而是需要在内核空间中使用导出的函数/符号。
接下来,可能需要查看特定于您正在使用的文件系统的struct inode_operations 。 另请查看generic_readlink()
,它在内部调用vfs_readlink()
。