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

我正在写一个LKM,需要找出特定符号链接指向的位置。 基本上我需要syscall readlinkat (或readlink )的function,但在内核空间。 是否有捷径可寻?

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

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

接下来,可能需要查看特定于您正在使用的文件系统的struct inode_operations 。 另请查看generic_readlink() ,它在内部调用vfs_readlink()