Reading a symbolic link in kernel-space

房东的猫 提交于 2019-12-30 17:37:28

问题


I'm writing a LKM and need to find out where a specific symlink is pointing to. Basically I need the functionality of the syscall readlinkat (or readlink) but in kernel-space. Is there an easy way to do this?

Using readlinkat directly is not working for me, I'm always getting EFAULT (I guess this is because my buffer is obviously in kernel memory space and not in user-space).


回答1:


Firstly, you can't use user space system calls(readlinkat() or readlink()) directly in your kernel module. Rather you need to use exported function / symbol within the kernel space.

Next, may want to look into the struct inode_operations specific to the file system which you are using. Also look into generic_readlink() which internally call vfs_readlink().



来源:https://stackoverflow.com/questions/26830150/reading-a-symbolic-link-in-kernel-space

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!