我正打算打电话
sys_readlink(const char __user *path, char __user *buf, int bufsiz)
直接,但获取EFAULT错误代码。出现此错误是因为 buf 指向内核空间的内存。
那么,是否有可能从内核分配用户空间内存?
kmalloc(size, GFP_USER)
与kmalloc(size, GFP_KERNEL)
类似
并返回指向内核内存的指针。
答案 0 :(得分:7)
您可以使用set_fs
mm_segment_t old_fs;
old_fs = get_fs();
set_fs(KERNEL_DS);
/* Your syscall here */
set_fs(old_fs);