一尘不染

从内核分配用户空间内存

linux

我正在尝试打电话

sys_readlink(const char __user *path, char __user *buf, int bufsiz)

直接,但获得EFAULT错误代码。出现此错误是因为 buf 指向内核空间中的内存。

那么,是否有可能从内核分配用户空间内存?

kmalloc(size, GFP_USER)kmalloc(size, GFP_KERNEL) 内核内存相似并返回指向内核内存的指针。


阅读 180

收藏
2020-06-03

共1个答案

一尘不染

您可以使用以下方法临时禁用内存地址有效性检查: set_fs

mm_segment_t old_fs;

old_fs = get_fs();
set_fs(KERNEL_DS);
/* Your syscall here */
set_fs(old_fs);
2020-06-03